# IPItemService > IP条目管理 --- ## checkIPItemStatus > 检查IP状态 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/IPItemService/checkIPItemStatus` - RPC:`rpc checkIPItemStatus (CheckIPItemStatusRequest) returns (CheckIPItemStatusResponse);` **请求对象 (`CheckIPItemStatusRequest`)** ```json { "ipListId": "int64", "ip": "string" } ``` **响应对象 (`CheckIPItemStatusResponse`)** ```json { "isOk": "bool // 是否查询成功", "error": "string", "isFound": "bool // 是否找到", "isAllowed": "bool // 是否允许", "ipItem": "IPItem // 匹配的IPItem" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/checkIPItemStatus" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## countAllEnabledIPItems > 计算所有IP数量 - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/countAllEnabledIPItems` - RPC:`rpc countAllEnabledIPItems(CountAllEnabledIPItemsRequest) returns (RPCCountResponse);` **请求对象 (`CountAllEnabledIPItemsRequest`)** ```json { "keyword": "string // 关键词", "ip": "string // 单个IP,搜索单个IP时需要", "globalOnly": "bool // 是否为自动添加的IP", "unread": "bool // 是否未读", "eventLevel": "string // 事件级别", "listType": "string // 列表类型:black|white", "userId": "int64 // 用户ID,只有管理员才有权限指定用户ID" } ``` **响应对象 (`RPCCountResponse`)** ```json { "count": "int64 // 数量" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/countAllEnabledIPItems" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## countIPItemsWithListId > 计算IP数量 - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/countIPItemsWithListId` - RPC:`rpc countIPItemsWithListId (CountIPItemsWithListIdRequest) returns (RPCCountResponse);` **请求对象 (`CountIPItemsWithListIdRequest`)** ```json { "ipListId": "int64", "keyword": "string // 关键词", "ipFrom": "string", "ipTo": "string", "eventLevel": "string" } ``` **响应对象 (`RPCCountResponse`)** ```json { "count": "int64 // 数量" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/countIPItemsWithListId" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## createIPItem > 创建IP - 角色:`dns`, `user`, `node`, `admin` - HTTP:`POST https://backend.dooki.cloud/IPItemService/createIPItem` - RPC:`rpc createIPItem (CreateIPItemRequest) returns (CreateIPItemResponse);` **请求对象 (`CreateIPItemRequest`)** ```json { "ipListId": "int64 // 所属IP列表ID", "value": "string // IP原始值,比如单个IP、IP范围或者CIDR,指定了原始值后,无需设置ipFrom和ipTo两个参数", "ipFrom": "string // 开始IP", "ipTo": "string // 结束IP(可选)", "expiredAt": "int64 // 过期时间戳(可选)", "reason": "string // 加入理由(可选)", "type": "string // IP类型,值为ipv4或ipv6", "eventLevel": "string // 级别:debug, notice, warning, error, critical, fatal", "nodeId": "int64 // 可选项,所属节点ID", "serverId": "int64 // 可选项,所属网站ID", "sourceNodeId": "int64 // 可选项,来源节点", "sourceServerId": "int64 // 可选项,来源网站ID", "sourceHTTPFirewallPolicyId": "int64 // 可选项,来源WAF策略ID", "sourceHTTPFirewallRuleGroupId": "int64 // 可选项,来源WAF规则分组ID", "sourceHTTPFirewallRuleSetId": "int64 // 可选项,来源WAF规则集ID" } ``` **响应对象 (`CreateIPItemResponse`)** ```json { "ipItemId": "int64" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/createIPItem" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## createIPItems > 创建一组IP - 角色:`dns`, `user`, `node`, `admin` - HTTP:`POST https://backend.dooki.cloud/IPItemService/createIPItems` - RPC:`rpc createIPItems(CreateIPItemsRequest) returns (CreateIPItemsResponse);` **请求对象 (`CreateIPItemsRequest`)** ```json { "ipItems": "[]IPItem // 要创建的IP列表", "ipListId": "int64 // IP列表ID", "value": "string // IP原始值,比如单个IP、IP范围或者CIDR,指定了原始值后,无需设置ipFrom和ipTo两个参数", "ipFrom": "string // 开始IP", "ipTo": "string // 结束IP(可选)", "expiredAt": "int64 // 过期时间戳(可选)", "reason": "string // 加入理由(可选)", "type": "string // 类型", "eventLevel": "string // 级别", "nodeId": "int64 // 所属节点ID", "serverId": "int64 // 所属服务ID", "sourceNodeId": "int64", "sourceServerId": "int64", "sourceHTTPFirewallPolicyId": "int64", "sourceHTTPFirewallRuleGroupId": "int64", "sourceHTTPFirewallRuleSetId": "int64" } ``` **响应对象 (`CreateIPItemsResponse`)** ```json { "ipItemIds": "[]int64 // 创建后的IP ID列表" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/createIPItems" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## deleteIPItem > 删除IP - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/deleteIPItem` - RPC:`rpc deleteIPItem (DeleteIPItemRequest) returns (RPCSuccess);` **请求对象 (`DeleteIPItemRequest`)** ```json { "ipItemId": "int64 // IP条目的ID", "value": "string // IP原始值,比如单个IP、IP范围或者CIDR,指定了原始值后,无需设置ipFrom和ipTo两个参数", "ipFrom": "string // v0.4.8新增,开始IP,和ipItemId二选一", "ipTo": "string // v0.4.8新增,结束IP,和ipItemId二选一", "ipListId": "int64 // v0.4.8新增,IP列表,IP所在的IP列表,如果不指定,则会删除所有IP列表中的相关IP信息" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/deleteIPItem" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## deleteIPItems > 批量删除IP - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/deleteIPItems` - RPC:`rpc deleteIPItems(DeleteIPItemsRequest) returns (RPCSuccess);` **请求对象 (`DeleteIPItemsRequest`)** ```json { "ipItemIds": "[]int64" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/deleteIPItems" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## existsEnabledIPItem > 检查IP是否存在 - 角色:`admin` - HTTP:`POST https://backend.dooki.cloud/IPItemService/existsEnabledIPItem` - RPC:`rpc existsEnabledIPItem (ExistsEnabledIPItemRequest) returns (ExistsEnabledIPItemResponse);` **请求对象 (`ExistsEnabledIPItemRequest`)** ```json { "ipItemId": "int64" } ``` **响应对象 (`ExistsEnabledIPItemResponse`)** ```json { "exists": "bool" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/existsEnabledIPItem" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## findEnabledIPItem > 查找单个IP - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/findEnabledIPItem` - RPC:`rpc findEnabledIPItem (FindEnabledIPItemRequest) returns (FindEnabledIPItemResponse);` **请求对象 (`FindEnabledIPItemRequest`)** ```json { "ipItemId": "int64" } ``` **响应对象 (`FindEnabledIPItemResponse`)** ```json { "ipItem": "IPItem" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/findEnabledIPItem" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## findServerIdWithIPItemId > 查找IP对应的名单所属网站ID - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/findServerIdWithIPItemId` - RPC:`rpc findServerIdWithIPItemId(FindServerIdWithIPItemIdRequest) returns (FindServerIdWithIPItemIdResponse);` **请求对象 (`FindServerIdWithIPItemIdRequest`)** ```json { "ipItemId": "int64 // IP ID" } ``` **响应对象 (`FindServerIdWithIPItemIdResponse`)** ```json { "serverId": "int64 // 网站ID" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/findServerIdWithIPItemId" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## listAllEnabledIPItems > 列出所有名单中的IP - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/listAllEnabledIPItems` - RPC:`rpc listAllEnabledIPItems(ListAllEnabledIPItemsRequest) returns (ListAllEnabledIPItemsResponse);` **请求对象 (`ListAllEnabledIPItemsRequest`)** ```json { "keyword": "string // 关键词", "ip": "string // 单个IP,搜索单个IP时需要", "globalOnly": "bool // 是否为自动添加的IP", "unread": "bool // 是否未读", "eventLevel": "string // 事件级别", "listType": "string // 列表类型:black|white", "userId": "int64 // 用户ID,只有管理员才有权限指定用户ID", "offset": "int64 // 读取位置,从0开始", "size": "int64 // 每次读取数量" } ``` **响应对象 (`ListAllEnabledIPItemsResponse`)** ```json { "results": "[]Result", "ipList": "IPList // 所属名单", "ipItem": "IPItem // IP信息", "server": "Server // 所属服务", "httpFirewallPolicy": "HTTPFirewallPolicy // 所属WAF策略" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/listAllEnabledIPItems" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## listAllIPItemIds > 列出所有名单中的IP ID - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/listAllIPItemIds` - RPC:`rpc listAllIPItemIds(ListAllIPItemIdsRequest) returns (ListAllIPItemIdsResponse);` **请求对象 (`ListAllIPItemIdsRequest`)** ```json { "keyword": "string // 关键词", "ip": "string // 单个IP,搜索单个IP时需要", "globalOnly": "bool // 是否为自动添加的IP", "unread": "bool // 是否未读", "eventLevel": "string // 事件级别", "listType": "string // 列表类型:black|white", "userId": "int64 // 用户ID,只有管理员才有权限指定用户ID", "offset": "int64 // 读取位置,从0开始", "size": "int64 // 每次读取数量" } ``` **响应对象 (`ListAllIPItemIdsResponse`)** ```json { "ipItemIds": "[]int64 // IP ID列表" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/listAllIPItemIds" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## listIPItemsAfterVersion > 根据版本列出一组IP - 角色:`node`, `admin` - HTTP:`POST https://backend.dooki.cloud/IPItemService/listIPItemsAfterVersion` - RPC:`rpc listIPItemsAfterVersion (ListIPItemsAfterVersionRequest) returns (ListIPItemsAfterVersionResponse);` **请求对象 (`ListIPItemsAfterVersionRequest`)** ```json { "version": "int64 // 版本号", "size": "int64 // 数量" } ``` **响应对象 (`ListIPItemsAfterVersionResponse`)** ```json { "ipItems": "[]IPItem", "version": "int64 // 新的版本号" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/listIPItemsAfterVersion" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## listIPItemsWithListId > 列出单页的IP - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/listIPItemsWithListId` - RPC:`rpc listIPItemsWithListId (ListIPItemsWithListIdRequest) returns (ListIPItemsWithListIdResponse);` **请求对象 (`ListIPItemsWithListIdRequest`)** ```json { "ipListId": "int64", "keyword": "string // 关键词", "ipFrom": "string", "ipTo": "string", "eventLevel": "string", "offset": "int64 // 读取位置", "size": "int64 // 数量,通常不能小于0" } ``` **响应对象 (`ListIPItemsWithListIdResponse`)** ```json { "ipItems": "[]IPItem" } ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/listIPItemsWithListId" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## updateIPItem > 修改IP - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/updateIPItem` - RPC:`rpc updateIPItem (UpdateIPItemRequest) returns (RPCSuccess);` **请求对象 (`UpdateIPItemRequest`)** ```json { "ipItemId": "int64", "value": "string // IP原始值,比如单个IP、IP范围或者CIDR,指定了原始值后,无需设置ipFrom和ipTo两个参数", "ipFrom": "string // 开始IP", "ipTo": "string // 结束IP(可选)", "expiredAt": "int64", "reason": "string", "type": "string // 类型", "eventLevel": "string // 级别" } ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/updateIPItem" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` --- ## updateIPItemsRead > 设置所有为已读 - 角色:`admin`, `user` - HTTP:`POST https://backend.dooki.cloud/IPItemService/updateIPItemsRead` - RPC:`rpc updateIPItemsRead(UpdateIPItemsReadRequest) returns (RPCSuccess);` **请求对象 (`UpdateIPItemsReadRequest`)** ```json {} ``` **响应对象 (`RPCSuccess`)** ```json {} ``` **调用示例** ```bash curl -X POST "https://backend.dooki.cloud/IPItemService/updateIPItemsRead" \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: " \ -d '{ ... }' ``` ---