2.3 KiB
2.3 KiB
Projects
Projects are organizational containers that group channels, knowledge bases, notes, and files. They follow the scope model (personal, team, global).
Project CRUD
GET /projects → { "data": [...] }
POST /projects ← { "name", "description", "scope", "team_id", "persona_id", "system_prompt" }
GET /projects/:id → project object
PUT /projects/:id ← partial update
DELETE /projects/:id
Project object:
{
"id": "uuid",
"name": "Q3 Research",
"description": "...",
"scope": "personal|team|global",
"owner_id": "uuid",
"team_id": "uuid|null",
"persona_id": "uuid|null",
"system_prompt": "...|null",
"is_archived": false,
"channel_count": 5,
"created_at": "...",
"updated_at": "..."
}
Channel Association
GET /projects/:id/channels → { "data": [channel objects] }
POST /projects/:id/channels ← { "channel_id": "uuid" }
DELETE /projects/:id/channels/:channelId
PUT /projects/:id/channels/reorder ← { "channel_ids": ["uuid1", "uuid2"] }
A channel can only belong to one project. POST performs an atomic
move if the channel is already in a different project.
KB Association
GET /projects/:id/knowledge-bases → { "data": [KB objects] }
POST /projects/:id/knowledge-bases ← { "kb_id": "uuid" }
DELETE /projects/:id/knowledge-bases/:kbId
KBs bound to a project are automatically available to every channel in that project (see §5.7 resolution chain).
Note Association
GET /projects/:id/notes → { "data": [note objects] }
POST /projects/:id/notes ← { "note_id": "uuid" }
DELETE /projects/:id/notes/:noteId
Project Files
GET /projects/:id/files → { "files": [...] }
POST /projects/:id/files ← multipart/form-data
Project-level file uploads (distinct from workspace files and channel attachments).
Admin Project Management
GET /admin/projects → { "data": [...] }
DELETE /admin/projects/:id
Cross-instance visibility for platform admins. BYOK personal projects remain private (admin can delete but not read content).