Mensagens de obra — Etapa 1
GET /v1/messages, GET /v1/messages/{id}, POST /v1/messages. GET exige read; POST exige write e Idempotency-Key. Listas têm limit entre 1 e 100 e cursor opaco ligado à organização e ao recurso. Respostas no-store; IDs de outra organização devolvem 404.
A criação aceita apenas folderId e text não vazio (até 20 000 caracteres). folderId tem de identificar uma obra na organização; caso contrário devolve 422. O servidor gera id, createdAt, author e authorId; ambos os campos de autor recebem o identificador do principal autenticado. Identidade fornecida pelo cliente é recusada. Não envia mensagens para email, WhatsApp ou outros serviços.
Escolha de design Etapa 1: usa projectMessageSchema e o envelope L1 em organizations/{org}/projectMessages/{id}. A UI continua a ler projectExtras/default; não existe sincronização com esse agregado nesta etapa. Menções e anexos continuam no fluxo existente da app.
MCP: list_messages, get_message, create_message. O schema completo está em OpenAPI; a criação MCP recebe {data, idempotencyKey}.