Appearance
项目管理
概述
项目 API 将设备、警报和数据管道限定在单个组织下(见字段参考了解 project_id、device_pk 等)。每个项目公开一个人类可读的名称以及用于 URL 的稳定 project_id。设备级别的路由命名空间在 /projects/{project_id}/ 下。
- 基础路径:
/api/v2/projects/ - 缓存: 列表和详情响应短暂缓存,并在项目更改时自动刷新
端点摘要
| 方法 | 路径 | 用途 | 备注 |
|---|---|---|---|
| GET | /api/v2/projects/ | 列出活跃组织中的项目 | 包括 device_count/offline_device_count。见列出项目。 |
| GET | /api/v2/projects/{project_id}/ | 获取项目详情 | 使用 project_id 作为查找字段。见获取项目。 |
| POST | /api/v2/projects/ | 创建新项目 | org_slug 由服务器端注入。见创建项目。 |
| PATCH | /api/v2/projects/{project_id}/ | 更新项目元数据(name、favorite) | 仅允许部分更新;project_id 不可变。见更新项目。 |
| DELETE | /api/v2/projects/{project_id}/ | 删除项目 | 移除关联的设备绑定。见删除项目。 |
| POST | /api/v2/projects/{project_id}/transfer/ | 将项目(和设备)移动到另一个组织 | 目标组织由 slug 标识。见转移项目。 |
列出项目
http
GET /api/v2/projects/
Authorization: Bearer <token>返回按 favorite、updated_at、pk 排序的分页项目记录。
json
[
{
"project_id": "proj_xxxx",
"name": "温室 Alpha",
"favorite": true,
"created_at": "2024-01-08T10:00:00Z",
"device_count": 42,
"offline_device_count": 3
}
]说明
device_count计算绑定到项目的所有设备。offline_device_count将每个设备的connect_time与系统配置中的离线阈值进行比较。- 限制为特定项目的访问令牌在
all_projects=false时只能看到request.auth["projects"]中列出的条目。
获取项目
http
GET /api/v2/projects/{project_id}/
Authorization: Bearer <token>返回与列表条目相同的架构。结果短暂缓存,并在项目更改时刷新。
创建项目
http
POST /api/v2/projects/
Authorization: Bearer <token>
Content-Type: application/json
{
"project_id": "cold-chain-east",
"name": "冷链东部",
"favorite": false
}- 如果省略
project_id,后端将生成一个形式为proj_<random>的项目 ID。 org_slug从request.organization自动注入,无法手动设置。
响应包括持久化记录和计算字段。
更新项目
http
PATCH /api/v2/projects/{project_id}/
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "温室 Alpha(北区)",
"favorite": true
}- 仅允许部分更新(
kwargs['partial']=True)。 - 如果负载中存在
project_id和org_slug,则忽略它们。
删除项目
http
DELETE /api/v2/projects/{project_id}/
Authorization: Bearer <token>删除项目。确保在删除之前将绑定到项目的设备解绑或转移,以避免硬件孤立。
转移项目
将项目(及其所有底层设备)移动到另一个组织。
http
POST /api/v2/projects/{project_id}/transfer/
Authorization: Bearer <token>
Content-Type: application/json
{
"target_org_slug": "yanji-demo"
}行为:
- 验证目标组织存在且与当前组织不同。
- 更新项目的
organization外键。 - 由于 FK 关系,项目下的设备自动跟随。
错误:
| 状态 | 消息 |
|---|---|
| 404 | "Target organization not found" |
| 400 | "Project already belongs to the target organization" |
相关端点
项目作为大多数嵌套 API 的根:
/projects/{project_id}/devices/…— 设备 CRUD、控制、遥测/projects/{project_id}/devices/{device_id}/points/…— 数据点管理/projects/{project_id}/alert/...— 警报配置和通知/projects/{project_id}/data-download-tasks/— 数据导出作业
有关端点详细信息,请参阅这些文档。项目必须存在才能调用任何嵌套路由。
