# 新氧连锁 Skill API 规范

> 本文档用于 OpenClaw Skill 调用。

## 基础信息

| 项目 | 值 |
|------|------|
| Base URL | `https://skill.soyoung.com` |
| 内容类型 | `application/json; charset=utf-8` |
| 字符编码 | UTF-8 |

## 接口总览

| 功能          | 方法 | 路径                                      | 说明              |
|-------------|------|-----------------------------------------|-----------------|
| 门店查询        | POST | `/booking/skill/query/store`            | 按城市查询门店列表       |
| 预约切片查询      | POST | `/booking/skill/query/booking_slice`    | 按门店 + 日期查询可约切片  |
| 预约查询（按日期聚合） | POST | `/booking/skill/query/booking`          | 查询用户预约列表（按日期聚合） |
| 提交预约        | POST | `/booking/skill/submit/booking`         | 创建预约            |
| 修改预约        | POST | `/booking/skill/modify/booking`         | 修改预约            |
| 取消预约        | POST | `/booking/skill/cancel/booking`         | 取消预约            |
| 品项查询        | POST | `/project/skill/clinic_solution/search` | 品类项目查询          |
| 商品查询        | POST | `/project/skill/clinic_product/search`  | 商品查询            |
| 医生查询        | POST | `/project/skill/clinic_doctor/search`   | 医生查询            |

---

## 请求体通用字段

> 所有接口采用 `POST`，所有请求体都有如下公共参数：

| 字段           | 类型 | 必填 | 说明                  |
|--------------|------|------|---------------------|
| `api_key`    | string | 是 | claw token，用于换取 uid |
| `request_id` | string | 是 | 请求id                |

> `POST /booking/skill/*` 接口请求体字段为下划线风格。

| 字段            | 类型 | 必填 | 说明                  |
|---------------|------|------|---------------------|
| `city_name`   | string | 视接口 | 城市名称                |
| `hospital_id` | long | 视接口 | 机构/门店 id            |
| `date`        | string | 视接口 | 日期字符串（用于切片查询）       |
| `start_time`  | string | 视接口 | 预约开始时间              |
| `end_time`    | string | 视接口 | 预约结束时间              |
| `booking_id`  | long | 视接口 | 预约 id（修改/取消用）       |

> `POST /project/skill/*` 接口请求体字段为下划线风格。

| 字段           | 类型     | 必填 | 说明                                           |
|--------------|--------|------|----------------------------------------------|
| `city_name`  | string | 视接口 | 城市名称                                         |
| `content`    | string | 视接口 | 查询的关键词，需要从用户的问题中提取出的实体词，记住只保留实体词，这样有利于搜索引擎查询 |

---

## 1）门店查询

```
POST /booking/skill/query/store
```

### 请求体示例

```json
{
  "api_key": "xxx",
  "city_name": "北京",
  "request_id": "xxx"
}
```

### 响应

> `data` 为门店数组

```json
[
    {
      "机构ID": 11642747,
      "机构名称": "北京轻漾接口测试门店3(非实验) 11642747",
      "营业时间": "09:00-15:30",
      "门店面积（平米）": 123,
      "累计服务人次": 0,
      "机构地址": "保利广场容创西路与S50北五环入口交叉口西北100米"
    }
]
```

---

## 2）预约切片查询

```
POST /booking/skill/query/booking_slice
```

### 请求体示例

```json
{
  "api_key": "xxx",
  "hospital_id": 11642747,
  "city_name": "北京",
  "date": "2026-03-17",
  "request_id": "xxx"
}
```

### 响应

> `data` 为 time_details 数组

```json
[
  {
    "切片明细": [
      {
        "切片开始时间": "08:00:00",
        "切片结束时间": "09:00:00",
        "切片剩余库存": 19,
        "切片总库存": 19
      }
    ],
    "总库存": 19,
    "剩余库存": 19,
    "切片日期": "2026-03-20 00:00:00",
    "项目名称": "预约面诊"
  }
]
```

---

## 3）预约查询（按日期聚合）

```
POST /booking/skill/query/booking
```

### 请求体示例

```json
{
  "api_key": "xxx",
  "request_id": "xxx"
}
```

### 响应

> 外层 `data` 为按日期聚合数组，内层 `当天预约明细` 为预约明细数组

```json
[
    {
      "日期": "2026-03-17",
      "日期名称": "今日",
      "当天已预约总数": 2,
      "当天预约明细": [
        {
          "基础品ID": 11116508,
          "是否无单预约（0/1）": 0,
          "预约ID": 13409,
          "业务类型": 1,
          "顶级订单号": "1221111111111218856",
          "预约开始时间": "08:00",
          "预约结束时间": "09:00",
          "机构ID": 15731,
          "基础品名称": "新-宝拉测试有预约周期基础单品",
          "机构名称": "来广营测试医院(勿乱改密码)5测算比较长的名称的测试测试",
          "可预约子单（订单号）": "1221111111111218856",
          "门店ID": 2
        }
      ]
    }
]
```

---

## 4）提交预约

```
POST /booking/skill/submit/booking
```

### 请求体示例

```json
{
  "api_key": "xxx",
  "hospital_id": 11642747,
  "start_time": "2026-03-17 15:00:00",
  "end_time": "2026-03-17 16:00:00",
  "request_id": "xxx"
}
```

### 响应

> 成功：`失败原因 = null`，返回 `预约ID`；失败：`失败原因` 有值

```json
{
    "失败原因": null,
    "预约ID": 13433
}
```

---

## 5）修改预约

```
POST /booking/skill/modify/booking
```

### 请求体示例

```json
{
  "api_key": "xxx",
  "hospital_id": 11642747,
  "start_time": "2026-03-17 17:00:00",
  "end_time": "2026-03-17 18:00:00",
  "booking_id": 13433,
  "request_id": "xxx"
}
```

### 响应

> 成功：`失败原因 = null`，返回 `预约ID`；失败：`失败原因` 有值

```json
{
    "失败原因": null,
    "预约ID": 13433
}
```

---

## 6）取消预约

```
POST /booking/skill/cancel/booking
```

### 请求体示例

```json
{
  "api_key": "xxx",
  "booking_id": 13434,
  "request_id": "xxx"
}
```

### 响应

> 成功：`失败原因 = null`；失败：`失败原因` 有值

```json
{
    "失败原因": null
}
```

## 7）品项查询

```
POST /project/skill/clinic_solution/search
```

### 请求体示例

```json
{
  "api_key": "xxx",
  "content": "肉毒",
  "request_id": "f733dea2e0be58955a68878265ef84e7"
}
```

### 响应

> 有数据：`返回对象数组`；无数据：`空数组`

```json
[
  {
    "品项id": 192,
    "品项名称": "国产肉毒",
    "核心原理": "xxxx",
    "xxxx": "xxxx"
  }
]
```

## 8）商品查询

```
POST /project/skill/clinic_product/search
```

### 请求体示例

```json
{
  "api_key": "xxx",
  "city_name": "北京",
  "content": "肉毒",
  "request_id": "f733dea2e0be58955a68878265ef84e7"
}
```

### 响应

> 有数据：`返回对象数组`；无数据：`空数组`

```json
[
  {
    "商品id": 11599670,
    "商品名称": "韩国品牌-50U",
    "商品数量": "1个",
    "使用产品信息": [
      "主使用产品:韩国进口, 规格:50单位"
    ],
    "售卖价格": "999.0元",
    "到手价格": "999.0元"
  }
]
```

## 9）医生查询

```
POST /project/skill/clinic_doctor/search
```

### 请求体字段说明

| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `api_key` | string | 是 | claw token，用于换取 uid |
| `content` | string | 是 | 查询关键词（如医生姓名、门店名） |
| `city_name` | string | 否 | 城市名称；不传时按全量范围检索 |
| `request_id` | string | 是 | 请求 id |

### 请求体示例（带 city_name）

```json
{
  "api_key": "xxx",
  "city_name": "北京",
  "content": "保利店",
  "request_id": "f733dea2e0be58955a68878265ef84e7"
}
```

### 请求体示例（不带 city_name）

```json
{
  "api_key": "xxx",
  "content": "保利店",
  "request_id": "f733dea2e0be58955a68878265ef84e7"
}
```

### 响应

> 有数据：`返回对象数组`；无数据：`空数组`

```json
[
  {
    "医生id": 4,
    "医生名称": "唐碧莹",
    "医生职称": "主治医师",
    "医生常驻门店": "新氧青春诊所(北京保利总部店) No.001",
    "医生所在城市": "北京市",
    "医生认证信息": "湖南中医药大学，主治医师，乔雅登朔颜注射认证医师，乔雅登质颜指定认证医师",
    "医生排班信息": "日期 - 20260330（星期一）- 休息，日期 - 20260331（星期二）- 北京保利店11:00-20:00，日期 - 20260401（星期三）- 北京保利店11:00-20:00，日期 - 20260402（星期四）- 北京保利店10:00-19:00，日期 - 20260403（星期五）- 北京保利店10:00-19:00，日期 - 20260404（星期六）- 北京保利店10:00-19:00，日期 - 20260405（星期日）- 北京保利店10:00-19:00，日期 - 20260406（星期一）- 休息，日期 - 20260407（星期二）- 北京保利店11:00-20:00，日期 - 20260408（星期三）- 北京保利店11:00-20:00，日期 - 20260409（星期四）- 北京保利店11:00-20:00，日期 - 20260410（星期五）- 北京保利店11:00-20:00，日期 - 20260411（星期六）- 北京保利店10:00-19:00，日期 - 20260412（星期日）- 北京保利店10:00-19:00"
  }
]
```

---

