88 lines
2.3 KiB
Markdown
88 lines
2.3 KiB
Markdown
# 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:
|
|
|
|
```json
|
|
{
|
|
"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).
|
|
|
|
---
|