Skip to content

项目管理

概述

项目 API 将设备、警报和数据管道限定在单个组织下(见字段参考了解 project_iddevice_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}/更新项目元数据(namefavorite仅允许部分更新;project_id 不可变。见更新项目
DELETE/api/v2/projects/{project_id}/删除项目移除关联的设备绑定。见删除项目
POST/api/v2/projects/{project_id}/transfer/将项目(和设备)移动到另一个组织目标组织由 slug 标识。见转移项目

列出项目

http
GET /api/v2/projects/
Authorization: Bearer <token>

返回按 favoriteupdated_atpk 排序的分页项目记录。

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_slugrequest.organization 自动注入,无法手动设置。

响应包括持久化记录和计算字段。

更新项目

http
PATCH /api/v2/projects/{project_id}/
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "温室 Alpha(北区)",
  "favorite": true
}
  • 仅允许部分更新(kwargs['partial']=True)。
  • 如果负载中存在 project_idorg_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"
}

行为:

  1. 验证目标组织存在且与当前组织不同。
  2. 更新项目的 organization 外键。
  3. 由于 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/ — 数据导出作业

有关端点详细信息,请参阅这些文档。项目必须存在才能调用任何嵌套路由。