# Hap API Doc Updater

> 专门用于维护和更新明道云 HAP 接口文档的技能。当用户需要在 HAP API 文档中新增、修改、删除接口,或需要同步中英文版本文档时使用此技能。支持组织授权 API (en/zh-Hans) 和应用 API (application) 两种文档类型。

- Skill: `garfield-bb/hap-api-doc-updater` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add garfield-bb/hap-api-doc-updater`
- Raw SKILL.md: https://api.skillmd.com/api/skills/garfield-bb/hap-api-doc-updater/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: garfield-bb (https://skillmd.com/u/garfield-bb)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/garfield-bb/hap-api-doc-updater

---


# HAP API 文档更新器

此技能专门用于维护和更新明道云 HAP (Host Application Platform) 的 OpenAPI 3.0 接口文档,支持中英文双语文档的同步管理。

## 使用场景

在以下情况下使用此技能:
- 用户需要在 HAP 文档中新增接口
- 用户需要修改现有接口的定义、参数或响应结构
- 用户需要删除废弃的接口
- 用户需要确保中英文文档保持同步
- 用户提到"HAP API 文档"、"接口文档"、"OpenAPI"、"新增接口"、"更新接口"等关键词

## 文档结构

HAP API 文档项目包含两类文档:

### 1. 组织授权 API 文档
位于项目根目录:
- `en/` - 英文版组织授权接口文档
- `zh-Hans/` - 中文版组织授权接口文档

### 2. 应用 API 文档 (v3-beta)
位于 application 目录:
- `application/en/` - 英文版应用接口文档
- `application/zh-Hans/` - 中文版应用接口文档

每个文档目录包含:
```
openapi.yaml         # 主文件,定义 tags、paths 路由
description.md       # 文档描述
index.html          # Redoc 预览页面
paths/              # 接口定义目录
  ├── user/         # 按功能模块分类
  ├── department/
  └── ...
schemas/            # 数据模型目录
  ├── base/         # 基础模型
  ├── user/         # 用户相关模型
  └── ...
```

## 工作流程

### 新增接口

1. **确定接口类型和位置**
   - 询问用户接口属于哪个模块 (user/department/app 等)
   - 确定是组织 API 还是应用 API
   - 确定 HTTP 方法 (GET/POST/PUT/DELETE 等)

2. **收集接口信息**
   - 接口路径 (如 `/v2/user/getExternalPortalUsers`)
   - 接口摘要和描述
   - 请求参数 (query/body/path parameters)
   - 响应结构
   - 是否需要鉴权参数 (appKey, sign, timestamp 等)

3. **创建文件结构**

   对于每个语言版本 (en 和 zh-Hans),执行以下操作:

   a. **创建 path 定义文件**
      - 位置: `paths/{module}/{operationName}.yaml`
      - 包含: HTTP 方法、tags、summary、description、parameters/requestBody、responses
      - 参考 `references/path_template.yaml` 中的模板

   b. **创建 schema 文件** (如需要)
      - 请求 schema: `schemas/{module}/{operationName}Request.yaml`
      - 响应 schema: `schemas/{module}/{operationName}Response.yaml`
      - 数据对象: `schemas/{module}/{objectName}.yaml`
      - 参考 `references/schema_template.yaml` 中的模板

   c. **更新 openapi.yaml**
      - 在 paths 部分添加新路由
      - 如果有特殊的 server 配置,添加 servers 字段
      - 确保按模块分组,保持文件整洁

4. **验证一致性**
   - 确保中英文版本结构一致
   - 检查所有 $ref 引用路径正确
   - 验证必填字段在 required 数组中

### 修改接口

1. **定位文件**
   - 使用 Grep 工具搜索接口路径或 operationId
   - 找到对应的 path 文件和相关 schema 文件

2. **同步修改**
   - 同时修改中英文版本的对应文件
   - 保持字段结构一致,仅翻译 description 和 example

3. **更新关联文件**
   - 如果修改了 schema 引用,检查其他使用该 schema 的接口
   - 如果修改了路径,同步更新 openapi.yaml

### 删除接口

1. **从 openapi.yaml 中移除路由**
   - 同时删除中英文版本

2. **删除相关文件**
   - 删除 paths 文件
   - 检查 schemas 是否被其他接口使用,如果没有则删除

3. **验证引用**
   - 确保没有其他地方引用已删除的文件

### 同步中英文文档

1. **对比结构**
   - 检查 openapi.yaml 中的 paths 是否一致
   - 对比文件目录结构

2. **同步差异**
   - 复制缺失的文件
   - 翻译描述性文本
   - 保持技术字段 (type, format, required 等) 完全一致

## 重要规范

### 命名规范
- **文件命名**: 使用驼峰命名法,如 `getExternalPortalUsers.yaml`
- **operationId**: 与文件名保持一致
- **schema 文件**: 使用描述性名称,如 `externalPortalUser.yaml`

### 路径引用规范
- 从 openapi.yaml 引用 paths: `'./paths/{module}/{file}.yaml'`
- 从 paths 引用 schemas: `'../../schemas/{module}/{file}.yaml'`
- 从 schemas 引用其他 schemas: `'./{file}.yaml'`

### 请求/响应规范

**GET 请求**: 使用 parameters 定义查询参数
```yaml
parameters:
  - name: pageIndex
    in: query
    required: true
    schema:
      type: integer
```

**POST 请求**: 使用 requestBody 定义请求体
```yaml
requestBody:
  required: true
  content:
    application/json:
      schema:
        $ref: '../../schemas/user/requestSchema.yaml'
```

### 鉴权参数
组织 API 通常需要以下基础参数:
- `appKey` - 应用密钥
- `sign` - 签名
- `timestamp` - 时间戳
- `projectId` - 项目 ID

可以引用基础 schema: `$ref: ../../schemas/base/request/baseQueryAppkey.yaml`

### 响应结构
标准响应格式:
```yaml
type: object
properties:
  code:
    type: integer
    description: 状态码,1表示成功
  message:
    type: string
    description: 状态描述
  data:
    type: object/array
    description: 返回数据
```

## 工作检查清单

在完成文档更新后,执行以下检查:

- [ ] 中英文版本都已更新
- [ ] openapi.yaml 中的路由已添加/修改/删除
- [ ] paths 文件已创建/修改/删除
- [ ] 必要的 schemas 文件已创建
- [ ] 所有 $ref 引用路径正确
- [ ] 必填参数在 required 数组中声明
- [ ] description 提供了清晰的说明
- [ ] example 提供了有效的示例值
- [ ] 中英文字段结构完全一致 (仅描述不同)

## 参考资料

详细的模板和示例请查看:
- `references/path_templates.md` - 接口定义模板
- `references/schema_templates.md` - 数据模型模板
- `references/common_patterns.md` - 常见模式参考

## 预览文档

修改完成后,可以使用 Live Server 预览:
1. 在 VS Code 中右键点击 `zh-Hans/index.html` 或 `en/index.html`
2. 选择 "Open With Live Server"
3. 浏览器将自动打开并显示 Redoc 渲染的文档

