# Watchdog API 端点

## Watchdog HTTP API (Port: 8990)

| 路径 | 方法 | 说明 | 认证 |
|------|------|------|------|
| `/api/heartbeat` | POST | Agent心跳接口 | Tier-Two TOTP |
| `/api/heartbeat/hosts` | GET | 获取所有心跳主机 | 内部调用 |
| `/api/node/info` | POST | Node信息上报接口 | Tier-Two TOTP |
| `/api/node/list` | GET | 获取所有Node列表 | 内部调用 |
| `/api/node/metrics/:node_id` | GET | 获取指定Node运行指标 | 内部调用 |
| `/api/authorization/generate` | GET | 生成授权文件 | 内部调用 |
| `/api/authorization/auth` | POST | 接收授权码 | Tier-One TOTP |
| `/api/authorization/hosts` | GET | 获取所有已授权主机 | 内部调用 |

## Node HTTP API (Port: 8081)

| 路径 | 方法 | 说明 | 认证 |
|------|------|------|------|
| `/api/exec` | POST | 执行命令 | Tier-Two TOTP |
| `/api/info` | GET | 获取主机信息 | Tier-Two TOTP |
| `/api/metrics` | GET | 获取运行指标 | Tier-Two TOTP |
| `/api/dltu` | POST | 镜像操作(Download-Load-Tag-Upload) | Tier-Two TOTP |

## 请求/响应结构

### HeartbeatRequest
```go
type HeartbeatRequest struct {
    HostInfo  HostInfo `json:"host_info"`
    EnvInfo   EnvInfo  `json:"env_info"`
    Timestamp int64    `json:"timestamp"`
    TOTPCode  string   `json:"totp_code"`
}
```

### HeartbeatResponse
```go
type HeartbeatResponse struct {
    Authorized       bool   `json:"authorized"`
    TOTPCode         string `json:"totp_code"`
    Timestamp        int64  `json:"timestamp"`
    SecondTOTPSecret string `json:"second_totp_secret,omitempty"`
}
```

### NodeInfoRequest
```go
type NodeInfoRequest struct {
    NodeID   string             `json:"node_id"`
    HostInfo HostInfo           `json:"host_info"`
    Metrics  NodeRuntimeMetrics `json:"metrics"`
    Timestamp int64             `json:"timestamp"`
    TOTPCode  string            `json:"totp_code"`
}
```
