# FormalClientBrowserService
> 浏览器信息库服务

---

## countFormalClientBrowsers
> 计算浏览器信息数量

- 角色：`admin`
- HTTP：`POST https://backend.dooki.cloud/FormalClientBrowserService/countFormalClientBrowsers`
- RPC：`rpc countFormalClientBrowsers(CountFormalClientBrowsersRequest) returns (RPCCountResponse);`

**请求对象 (`CountFormalClientBrowsersRequest`)**

```json
{
  "keyword": "string // 可选"
}
```

**响应对象 (`RPCCountResponse`)**

```json
{
  "count": "int64 // 数量"
}
```

**调用示例**

```bash
curl -X POST "https://backend.dooki.cloud/FormalClientBrowserService/countFormalClientBrowsers" \
  -H "Content-Type: application/json" \
  -H "X-Edge-Access-Token: <YOUR_TOKEN>" \
  -d '{
    ...
  }'
```

---

## createFormalClientBrowser
> 创建浏览器信息

- 角色：`admin`
- HTTP：`POST https://backend.dooki.cloud/FormalClientBrowserService/createFormalClientBrowser`
- RPC：`rpc createFormalClientBrowser(CreateFormalClientBrowserRequest) returns (CreateFormalClientBrowserResponse);`

**请求对象 (`CreateFormalClientBrowserRequest`)**

```json
{
  "name": "string // 名称",
  "codes": "[]string",
  "dataId": "string"
}
```

**响应对象 (`CreateFormalClientBrowserResponse`)**

```json
{
  "formalClientBrowserId": "int64"
}
```

**调用示例**

```bash
curl -X POST "https://backend.dooki.cloud/FormalClientBrowserService/createFormalClientBrowser" \
  -H "Content-Type: application/json" \
  -H "X-Edge-Access-Token: <YOUR_TOKEN>" \
  -d '{
    ...
  }'
```

---

## findFormalClientBrowserWithDataId
> 通过dataId查询浏览器信息

- 角色：`admin`
- HTTP：`POST https://backend.dooki.cloud/FormalClientBrowserService/findFormalClientBrowserWithDataId`
- RPC：`rpc findFormalClientBrowserWithDataId(FindFormalClientBrowserWithDataIdRequest) returns (FindFormalClientBrowserWithDataIdResponse);`

**请求对象 (`FindFormalClientBrowserWithDataIdRequest`)**

```json
{
  "dataId": "string"
}
```

**响应对象 (`FindFormalClientBrowserWithDataIdResponse`)**

```json
{
  "formalClientBrowser": "FormalClientBrowser"
}
```

**调用示例**

```bash
curl -X POST "https://backend.dooki.cloud/FormalClientBrowserService/findFormalClientBrowserWithDataId" \
  -H "Content-Type: application/json" \
  -H "X-Edge-Access-Token: <YOUR_TOKEN>" \
  -d '{
    ...
  }'
```

---

## listFormalClientBrowsers
> 列出单页浏览器信息

- 角色：`admin`
- HTTP：`POST https://backend.dooki.cloud/FormalClientBrowserService/listFormalClientBrowsers`
- RPC：`rpc listFormalClientBrowsers(ListFormalClientBrowsersRequest) returns (ListFormalClientBrowsersResponse);`

**请求对象 (`ListFormalClientBrowsersRequest`)**

```json
{
  "keyword": "string // 可选",
  "offset": "int64 // 读取位置",
  "size": "int64 // 数量，通常不能小于0"
}
```

**响应对象 (`ListFormalClientBrowsersResponse`)**

```json
{
  "formalClientBrowsers": "[]FormalClientBrowser"
}
```

**调用示例**

```bash
curl -X POST "https://backend.dooki.cloud/FormalClientBrowserService/listFormalClientBrowsers" \
  -H "Content-Type: application/json" \
  -H "X-Edge-Access-Token: <YOUR_TOKEN>" \
  -d '{
    ...
  }'
```

---

## updateFormalClientBrowser
> 修改浏览器信息

- 角色：`admin`
- HTTP：`POST https://backend.dooki.cloud/FormalClientBrowserService/updateFormalClientBrowser`
- RPC：`rpc updateFormalClientBrowser(UpdateFormalClientBrowserRequest) returns (RPCSuccess);`

**请求对象 (`UpdateFormalClientBrowserRequest`)**

```json
{
  "formalClientBrowserId": "int64",
  "name": "string // 名称",
  "codes": "[]string",
  "dataId": "string"
}
```

**响应对象 (`RPCSuccess`)**

```json
{}
```

**调用示例**

```bash
curl -X POST "https://backend.dooki.cloud/FormalClientBrowserService/updateFormalClientBrowser" \
  -H "Content-Type: application/json" \
  -H "X-Edge-Access-Token: <YOUR_TOKEN>" \
  -d '{
    ...
  }'
```

---
