工单
管理接口 /api/tickets 的用户工单契约——创建、列表、详情、回复与附件上传。
工单接口属于管理接口:鉴权方式为登录会话(或用户 access token)+ Jimu-Api-User 请求头,
不接受 sk- API 令牌本身,详见 鉴权与令牌。
错误响应为管理接口形态(success/message),业务失败返回 HTTP 200,见 错误处理与请求追踪。
枚举
分类
| 值 | 含义 |
|---|---|
1 | 账号 |
2 | 计费 |
3 | 接口问题 |
4 | 技术 |
5 | 其他 |
优先级
| 值 | 含义 |
|---|---|
1 | 低 |
2 | 中 |
3 | 高 |
4 | 紧急 |
状态
| 值 | 含义 |
|---|---|
1 | 待处理 |
2 | 处理中 |
3 | 已解决 |
4 | 已关闭 |
端点总览
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/tickets/ | 当前用户工单列表(分页) |
POST | /api/tickets/ | 创建工单 |
GET | /api/tickets/{id} | 工单详情与消息 |
POST | /api/tickets/{id}/reply | 追加回复 |
POST | /api/tickets/{id}/upload | 上传附件 |
路径末尾的斜杠是 Gin 路由注册的规范形式;不带斜杠访问会收到 301 重定向到带斜杠的路径。
端点契约
获取工单列表
GET
/api/tickets/pint页码,从 1 开始
page_sizeint每页条数,默认 10
响应200
{
"success": true,
"data": [
{
"id": 1,
"user_id": 1001,
"category": 3,
"priority": 2,
"status": 1,
"subject": "API 调用报 500",
"description": "调用 /v1/chat/completions 时偶发 500",
"attachments": "",
"created_at": 1756400000,
"updated_at": 1756400000,
"first_response_at": 0,
"resolved_at": 0
}
],
"total": 1
}
创建工单
POST
/api/tickets/subjectstring必填工单标题,不能为空
descriptionstring详细描述
categoryint分类,缺省或传 0 时置为 5(其他)
priorityint优先级,缺省或传 0 时置为 2(中)
curl https://api.jimu.chat/api/tickets/ \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Jimu-Api-User: <USER_ID>" \
-H "Content-Type: application/json" \
-d '{
"subject": "API 调用报 500",
"description": "调用 /v1/chat/completions 时偶发 500",
"category": 3,
"priority": 2
}'
响应200
{
"success": true,
"message": "工单创建成功",
"data": {
"id": 1,
"user_id": 1001,
"category": 3,
"priority": 2,
"status": 1,
"subject": "API 调用报 500",
"description": "调用 /v1/chat/completions 时偶发 500",
"attachments": "",
"created_at": 1756400000,
"updated_at": 1756400000,
"first_response_at": 0,
"resolved_at": 0
}
}
工单详情
GET
/api/tickets/{id}响应 data 包含 ticket 与 messages:
响应200
{
"success": true,
"data": {
"ticket": {
"id": 1,
"user_id": 1001,
"category": 3,
"priority": 2,
"status": 1,
"subject": "API 调用报 500",
"description": "调用 /v1/chat/completions 时偶发 500",
"attachments": "",
"created_at": 1756400000,
"updated_at": 1756400000,
"first_response_at": 1756400500,
"resolved_at": 0
},
"messages": [
{
"id": 1,
"ticket_id": 1,
"is_admin": true,
"content": "已收到您的反馈,我们正在排查。",
"created_at": 1756400500
}
]
}
}
非本人工单返回 success: false、message: "无权访问此工单";工单不存在返回 message: "工单不存在"。
追加回复
POST
/api/tickets/{id}/replycontentstring必填回复内容,不能为空
curl https://api.jimu.chat/api/tickets/1/reply \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Jimu-Api-User: <USER_ID>" \
-H "Content-Type: application/json" \
-d '{"content": "补充一下,500 只在高峰时段出现"}'
工单状态为 4(已关闭)时不可回复,返回 message: "工单已关闭,无法回复"。
上传附件
POST
/api/tickets/{id}/uploadContent-Type: multipart/form-data,字段名 file。
- 上限 20 MB
- 允许扩展名:
.jpg.jpeg.png.gif.webp.pdf.txt.log.zip - 已关闭工单不可上传
curl https://api.jimu.chat/api/tickets/1/upload \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Jimu-Api-User: <USER_ID>" \
-F "file=@screenshot.png"
响应200
{
"success": true,
"message": "附件上传成功",
"data": {
"url": "/uploads/1756400000123456789_abc12345.png",
"filename": "screenshot.png",
"size": 245760
}
}
工单对象
idint工单 ID
user_idint所属用户 ID
categoryint分类(枚举见上文)
priorityint优先级(枚举见上文)
statusint状态(枚举见上文)
subjectstring标题
descriptionstring详细描述
attachmentsstring附件 URL 列表(逗号分隔)
created_atint创建时间(Unix 秒)
updated_atint更新时间(Unix 秒)
first_response_atint首次回复时间(Unix 秒),0 表示暂无回复
resolved_atint解决时间(Unix 秒),0 表示未解决
消息对象
| 字段 | 类型 | 说明 |
|---|---|---|
id | int | 消息 ID |
ticket_id | int | 所属工单 ID |
is_admin | bool | 是否管理员回复 |
content | string | 消息内容 |
created_at | int | 创建时间(Unix 秒) |