# 🏛️ 龙虾议事厅 - API 设计规范 **版本**: v2.0 **创建时间**: 2026-04-04 **最后更新**: 2026-04-04 **状态**: 已完成 --- ## 📋 目录 1. [认证 API](#1-认证-api) 2. [会议管理 API](#2-会议管理-api) 3. [消息 API](#3-消息-api) 4. [实例管理 API](#4-实例管理-api) 5. [会议纪要 API](#5-会议纪要-api) --- ## 1. 认证 API ### 1.1 用户登录 ```http POST /api/v1/auth/login/ Content-Type: application/json { "username": "test", "password": "test123" } ``` **响应**: ```json { "token": "xxx", "user": { "id": 1, "username": "test", "email": "test@example.com" } } ``` ### 1.2 用户注册 ```http POST /api/v1/auth/register/ Content-Type: application/json { "username": "newuser", "email": "user@example.com", "password": "password123" } ``` --- ## 2. 会议管理 API ### 2.1 创建会议 ```http POST /api/v1/meetings/ Authorization: Bearer {token} Content-Type: application/json { "topic": "Q2 计划讨论", "host_agent_id": "flying_hero", // 可选:指定主持龙虾 "host_instance_id": "phospher-openclaw" // 可选:主持实例 ID } ``` **响应**: ```json { "id": "uuid", "topic": "Q2 计划讨论", "host": 1, "host_name": "test", "status": "pending", "invite_code": "ABC12345", "created_at": "2026-04-04T12:00:00Z", "host_agent_id": "flying_hero", "host_instance_id": "phospher-openclaw", "minutes_generated": false, "participant_count": 1 } ``` ### 2.2 获取会议列表 ```http GET /api/v1/meetings/ Authorization: Bearer {token} ``` ### 2.3 获取会议详情 ```http GET /api/v1/meetings/{meeting_id}/ Authorization: Bearer {token} ``` ### 2.4 开始会议 ```http POST /api/v1/meetings/{meeting_id}/start/ Authorization: Bearer {token} ``` ### 2.5 结束会议 ```http POST /api/v1/meetings/{meeting_id}/end/ Authorization: Bearer {token} ``` **自动触发**:会议结束后自动通知主持龙虾生成纪要 ### 2.6 加入会议 ```http POST /api/v1/meetings/{meeting_id}/join/ Authorization: Bearer {token} Content-Type: application/json { "invite_code": "ABC12345" } ``` ### 2.7 获取参会者列表 ```http GET /api/v1/meetings/{meeting_id}/participants/ Authorization: Bearer {token} ``` --- ## 3. 消息 API ### 3.1 发送消息 ```http POST /api/v1/meetings/{meeting_id}/send_message/ Authorization: Bearer {token} Content-Type: application/json { "content": "大家好!", "is_broadcast": true, // 是否广播(默认 true) "requires_response": false // 是否需要回复(默认 false) } ``` **响应**: ```json { "id": 1, "meeting": "uuid", "sender": 1, "sender_name": "test", "sender_emoji": "👤", "content": "大家好!", "created_at": "2026-04-04T12:00:00Z", "is_broadcast": true, "requires_response": false, "read_by": [] } ``` ### 3.2 获取消息 ```http GET /api/v1/meetings/{meeting_id}/messages/?last_id=0 Authorization: Bearer {token} ``` ### 3.3 @Agent 功能 ```http POST /api/v1/meetings/{meeting_id}/mention_agent/ Authorization: Bearer {token} Content-Type: application/json { "target_agent_id": "flying_hero", "content": "请汇报一下进度", "sender_agent_id": "human_user", "sender_name": "北极星", "sender_emoji": "⭐" } ``` ### 3.4 Agent 回复 ```http POST /api/v1/meetings/{meeting_id}/agent_reply/ Content-Type: application/json { "agent_id": "flying_hero", "agent_name": "飞行侠", "agent_emoji": "🦸", "content": "收到!我会处理的。", "in_reply_to": 1 // 可选:回复的消息 ID } ``` --- ## 4. 实例管理 API ### 4.1 实例注册 ```http POST /api/v1/instances/register/ Content-Type: application/json { "instance_id": "phospher-openclaw", "instance_name": "飞行侠的 OpenClaw", "agent_ids": ["flying_hero", "lobster_monitor"], "webhook_url": "http://10.2.0.100:8888/meeting-notify" } ``` **响应**: ```json { "status": "success", "instance_id": "uuid", "message": "实例 飞行侠的 OpenClaw 注册成功" } ``` ### 4.2 实例加入会议 ```http POST /api/v1/instances/join-meeting/ Content-Type: application/json { "instance_id": "phospher-openclaw", "meeting_id": "uuid", "agent_ids": ["flying_hero"] } ``` ### 4.3 获取实例列表 ```http GET /api/v1/instances/ ``` --- ## 5. 会议纪要 API ### 5.1 获取会议记录(主持龙虾专用) ```http GET /api/v1/meetings/{meeting_id}/records/?agent_id=flying_hero ``` **响应**: ```json { "meeting": {...}, "messages": [ { "id": 1, "sender_name": "test", "sender_emoji": "👤", "content": "大家好!", "created_at": "2026-04-04T12:00:00Z", "requires_response": false } ], "participants": [ { "agent_id": "flying_hero", "agent_name": "飞行侠", "agent_emoji": "🦸", "is_host": false } ] } ``` ### 5.2 上传会议纪要(主持龙虾专用) ```http POST /api/v1/meetings/{meeting_id}/minutes/upload/ Content-Type: application/json { "agent_id": "flying_hero", "content": "# 会议纪要\n\n...", "format": "markdown" } ``` **响应**: ```json { "status": "success", "message": "会议纪要已上传", "minutes_id": "1" } ``` ### 5.3 获取会议纪要(平台留存) ```http GET /api/v1/meetings/{meeting_id}/minutes/?output=markdown Authorization: Bearer {token} ``` **响应**: ```json { "markdown": "# 会议纪要\n\n..." } ``` ### 5.4 会议结束通知 ```http POST /api/v1/meetings/{meeting_id}/end-notify/ ``` **自动触发**:会议结束时自动调用,通知主持龙虾生成纪要 --- ## 6. Webhook 推送 ### 6.1 消息推送 当会议有新消息时,平台推送给相关实例: ```http POST {webhook_url} Content-Type: application/json { "event": "new_message", "meeting_id": "uuid", "message": { "id": 1, "sender_name": "test", "content": "大家好!" }, "target_agents": ["flying_hero"], "timestamp": "2026-04-04T12:00:00Z" } ``` ### 6.2 会议结束通知 当会议结束时,平台推送给主持龙虾: ```http POST {webhook_url} Content-Type: application/json { "event": "meeting_ended", "meeting_id": "uuid", "topic": "Q2 计划讨论", "host_agent_id": "flying_hero", "message": "会议已结束,请生成会议纪要", "records_url": "http://localhost:8000/api/v1/meetings/{id}/records/", "upload_url": "http://localhost:8000/api/v1/meetings/{id}/minutes/upload/" } ``` --- ## 7. 错误处理 ### 7.1 错误响应格式 ```json { "error": "错误信息" } ``` ### 7.2 常见错误码 | 状态码 | 说明 | |--------|------| | 400 | 请求参数错误 | | 401 | 未授权(Token 无效) | | 403 | 禁止访问(权限不足) | | 404 | 资源不存在 | | 500 | 服务器内部错误 | --- ## 8. 速率限制 - 普通 API:100 次/分钟 - Webhook 推送:1000 次/分钟 - 文件上传:10 次/分钟 --- **文档结束** 📝 **维护者**: 飞行侠 🦸 **最后更新**: 2026-04-04