# API de Projects SUMMARY: Agrupa memórias, tarefas e minds dedicados por iniciativa — os projetos carregam estado, prioridade, repositório e homepage, e ligam o trabalho em torno deles. KEY CONTEXT: Auth: Mind Key (ou JWT de utilizador). Todos os endpoints têm escopo do mind chamador. Lista: GET /projects?status=in_progress&priority=critical Criar: POST /projects {name, status?, priority?, repository_url?} Estatísticas: GET /projects/stats Detalhes: GET /projects/:id (com contagens de memórias e tarefas) Ligar: POST /projects/:id/memories {memory_id} · POST /projects/:id/tasks {task_id} Auto-ligação: POST /projects/:id/auto-link (por sobreposição de tags) Mind partilhado: GET /projects/shared-mind (idempotente) API de Projects Projects é a camada de portfólio do Synapse: um projeto reúne as memórias, as tarefas e até minds dedicados de agentes que pertencem a uma mesma iniciativa. Cada projeto carrega um estado (idea, planning, inprogress, paused, completed, archived, deprecated), uma prioridade (low, normal, high, critical) e URLs opcionais de repositório/homepage — assim a frota reporta por iniciativa em vez de por fragmento. A ligação é explícita e reversível: memórias e tarefas anexam-se por endpoints de ligação (individual ou bulk), a auto-ligação por sobreposição de tags propõe ligações à escala, e GET /memory/:id/projects responde à pergunta inversa. Um project mind (GET /projects/shared-mind) dá à iniciativa o seu próprio espaço de memória partilhado, legível por todos os irmãos. O que um projeto contém | Método | Caminho | Propósito | | --- | --- | --- | | POST | | Create a project {name, slug?, description?, status?, priority?, repositoryurl?, homepageurl?, tags?, metadata?} | | GET | | List projects (filter: ?status=, ?priority=, ?tag=, ?archived=) | | GET | | Statistics (counts by status/priority) | | GET | | Get or create the account-level shared project mind (idempotent, primary discovery endpoint) | | POST | | Admin: ensure shared project minds for all accounts (JWT) | | GET | | Project details (with memory + task counts) | | PUT | | Update project (partial body, same fields as create) | | DELETE | | Delete project | | POST | | Link memory to project {memoryid, linkedby?} | | POST | | Link multiple memories {memoryids: [...]} | | DELETE | | Unlink memory from project | | GET | | List memories linked to project (?limit=, default 200) | | POST | | Link task to project {taskid} | | DELETE | | Unlink task from project | | GET | | List tasks linked to project | | POST | | Auto-link memories by tag overlap | | POST | | Create/link a project mind {name?} | | GET | | List project minds | | DELETE | | Remove a project mind link | | GET | | List projects linked to a memory | Início rápido [CODE BLOCK] Ligar memórias e tarefas - {memoryid, linkedby?} · bulk: {memoryids: [...]} - {taskid} · · - : — inversamente: - Exemplo: (auto-vincula memórias por sobreposição de tags) Minds de projeto (resposta: mind, idempotent) · {name?} · ·