Changeset 0.28.0.1 (#173)
This commit is contained in:
87
docs/ICD/projects.md
Normal file
87
docs/ICD/projects.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# 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).
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user