# API Projects Projects là tầng danh mục của Synapse: một dự án gom các ký ức, nhiệm vụ và thậm chí các mind chuyên trách của agent thuộc cùng một sáng kiến. Mỗi dự án mang trạng thái (idea, planning, in_progress, paused, completed, archived, deprecated), mức ưu tiên (low, normal, high, critical) và URL repository/trang chủ tùy chọn — hạm đội báo cáo theo sáng kiến thay vì theo mảnh. Liên kết rõ ràng và đảo ngược được: ký ức và nhiệm vụ gắn qua endpoint liên kết (đơn hoặc bulk), tự liên kết theo trùng tag đề xuất hàng loạt, và GET /memory/:id/projects trả lời câu hỏi ngược. Project mind (GET /projects/shared-mind) trao cho sáng kiến không gian ký ức chung mà mọi sibling đều đọc được. ## Dự án chứa gì | Phương thức | Đường dẫn | Mục đích | | --- | --- | --- | | POST | `/projects` | Create a project {name, slug?, description?, status?, priority?, repository_url?, homepage_url?, tags?, metadata?} | | GET | `/projects` | List projects (filter: ?status=, ?priority=, ?tag=, ?archived=) | | GET | `/projects/stats` | Statistics (counts by status/priority) | | GET | `/projects/shared-mind` | Get or create the account-level shared project mind (idempotent, primary discovery endpoint) | | POST | `/projects/shared-mind/ensure-all` | Admin: ensure shared project minds for all accounts (JWT) | | GET | `/projects/:id` | Project details (with memory + task counts) | | PUT | `/projects/:id` | Update project (partial body, same fields as create) | | DELETE | `/projects/:id` | Delete project | | POST | `/projects/:id/memories` | Link memory to project {memory_id, linked_by?} | | POST | `/projects/:id/memories/bulk` | Link multiple memories {memory_ids: [...]} | | DELETE | `/projects/:id/memories/:memoryId` | Unlink memory from project | | GET | `/projects/:id/memories` | List memories linked to project (?limit=, default 200) | | POST | `/projects/:id/tasks` | Link task to project {task_id} | | DELETE | `/projects/:id/tasks/:taskId` | Unlink task from project | | GET | `/projects/:id/tasks` | List tasks linked to project | | POST | `/projects/:id/auto-link` | Auto-link memories by tag overlap | | POST | `/projects/:id/mind` | Create/link a project mind {name?} | | GET | `/projects/:id/minds` | List project minds | | DELETE | `/projects/:id/mind/:mindId` | Remove a project mind link | | GET | `/memory/:id/projects` | List projects linked to a memory | ## Bắt đầu nhanh ```bash # Ký ức đã liên kết / Endpoint curl -s -H "Authorization: Bearer $MIND_KEY" "https://synapse.schaefer.zone/projects?status=in_progress&priority=critical" curl -s -H "Authorization: Bearer $MIND_KEY" "https://synapse.schaefer.zone/projects/stats" curl -s -X POST -H "Authorization: Bearer $MIND_KEY" -H "Content-Type: application/json" \ -d '{"name":"Fleet Pulse","status":"in_progress","priority":"critical","repository_url":"https://gitlab.com/schaefer-services/fleet-pulse-hardware-dongle"}' \ "https://synapse.schaefer.zone/projects" ``` ## Liên kết ký ức và nhiệm vụ - `POST /projects/:id/memories` {memory_id, linked_by?} · bulk: `POST /projects/:id/memories/bulk` {memory_ids: [...]} - `POST /projects/:id/tasks` {task_id} · `GET /projects/:id/tasks` · `DELETE /projects/:id/tasks/:taskId` - `Ký ức đã liên kết`: `GET /projects/:id/memories?limit=200` — ngược lại: `GET /memory/:id/projects` - Ví dụ: `POST /projects/:id/auto-link` (tự liên kết memories theo trùng tag) ## Mind dự án `GET /projects/shared-mind` (phản hồi: mind, idempotent) · `POST /projects/:id/mind` {name?} · `GET /projects/:id/minds` · `DELETE /projects/:id/mind/:mindId`