
🔑 认证 每个请求都要
在请求头里带上您的登机口令,二选一:
X-Passphrase: 您的口令
# 或者
Authorization: Bearer 您的口令
口令不对会返回 401:{"detail": "我不认识你", "code": "unknown"}。
多次输错会被暂时拒绝(429)。请像保管密码一样保管口令。
🛫 上传任务
POST/api/v1/tasks
| 表单字段 | 说明 |
|---|---|
name | 任务名称,必填 |
text | 发送文本,必填 |
files | 附件,可多个、可没有 |
curl -X POST https://task.mywattdance.com/api/v1/tasks \ -H "X-Passphrase: $PASS" \ -F "name=季度数据清洗" \ -F "text=请清洗附件里的数据,输出标准格式" \ -F "files=@report.xlsx" -F "files=@notes.pdf"
成功返回这个任务(字段见下文)。被拒绝时返回 409(登机被拒绝);
附件太重返回 413(超过最大起飞重量)。
大文件:分块上传(断点续传)
- POST
/api/v1/uploads,JSON{"name": "big.zip", "size": 文件字节数},返回id、received、chunk_size。 - 依次 PUT
/api/v1/uploads/{id}?offset=N,请求体是文件从第 N 字节开始的原始数据(每块不超过chunk_size),返回最新的received。 断线后用 GET/api/v1/uploads/{id}查到received再接着传。 - POST
/api/v1/tasks,JSON{"name": "…", "text": "…", "upload_ids": ["id1", "id2"]}。
不想要的上传可以 DELETE/api/v1/uploads/{id}。
📋 查询任务列表
GET/api/v1/tasks?scope=mine&status=起飞,巡航
| 参数 | 说明 |
|---|---|
scope | mine 我的任务(默认)· company 本企业的任务 · all 所有企业的任务 |
status | 状态,可多选:起飞 巡航 失事 降落,逗号分隔或重复传;不传表示全部 |
company | 指定企业,配合 scope=all 使用,可重复传:company=企业A&company=企业B |
limit / offset | 分页 |
curl -G https://task.mywattdance.com/api/v1/tasks \ -H "X-Passphrase: $PASS" \ --data-urlencode "scope=company" --data-urlencode "status=巡航,降落"
返回 {"total": …, "items": [...]}。没有权限的查询返回 403。
🔍 查询任务详情
GET/api/v1/tasks/detail?ids=编号1,编号2
GET/api/v1/tasks/{编号}
编号就是任务列表里每个任务的 id,可以一次查多个。查不到的编号放在 missing 里。
下载附件
GET/api/v1/files/{附件 id}
curl -OJ -H "X-Passphrase: $PASS" https://task.mywattdance.com/api/v1/files/附件id
🧾 任务字段
| 字段 | 说明 |
|---|---|
id | 任务编号,查询详情时使用 |
no | 本企业的第几个任务 |
customer | 客户的名字(name)与企业(company) |
status | 起飞 / 巡航 / 失事 / 降落 |
name | 任务名称 |
countdown | 倒计时(秒),没有时为 null |
send_text · send_files | 发送文本、发送附件(仅详情) |
reply_text · reply_files | 回复文本、回复附件(仅详情) |
附件是 {"id", "name", "size"},id 用来下载。
⚠️ 错误
出错时返回 {"detail": "说明", "code": "代码"}:
| HTTP | code | 含义 |
|---|---|---|
| 400 | bad_request bad_param empty_field … | 参数不对、必填项为空 |
| 401 | unknown | 我不认识你(口令不对) |
| 403 | forbidden | 没有权限 |
| 404 | no_task no_file | 不存在 |
| 409 | rejected | 登机被拒绝 |
| 413 | overweight | 超过最大起飞重量 |
| 429 | too_many_attempts | 试错太多次了,请稍后再试 |
🐍 Python 示例
import requests BASE = "https://task.mywattdance.com/api/v1" s = requests.Session() s.headers["X-Passphrase"] = "您的口令" # 上传任务 with open("report.xlsx", "rb") as f: r = s.post(f"{BASE}/tasks", data={"name": "季度数据清洗", "text": "请清洗附件"}, files=[("files", ("report.xlsx", f))]) print(r.status_code, r.json()) # 查自己巡航中和已降落的任务 mine = s.get(f"{BASE}/tasks", params={"scope": "mine", "status": "巡航,降落"}).json() for t in mine["items"]: print(t["no"], t["status"], t["name"]) # 查详情 detail = s.get(f"{BASE}/tasks/detail", params={"ids": ",".join(t["id"] for t in mine["items"][:5])}).json()