Proposta futura, não implementada na API REST L1. Entidades e funcionalidades da app descritas abaixo não implicam endpoints /v1 disponíveis.
Pesquisa
Existe: Typesense com coleções projects, documents, contacts, catalog_items, sincronizadas pelos triggers syncProjects, syncDocuments, syncContacts, syncCatalog. A app obtém uma chave limitada (mintSearchKey, filtro orgId, 55 min, 50 resultados). worker não tem pesquisa Typesense.
GET /v1/search?q=blean&collections=projects,documents&limit=10 — scope search:read. O gateway consulta o Typesense com o filtro orgId forçado; a chave Typesense nunca é exposta.
{ "query": "blean", "found": 8, "hits": [
{ "collection": "projects", "id": "prj_bl001", "title": "Blean — Reabilitação em Lisboa", "subtitle": "BL-OBR-001 · Lisboa", "href": "/v1/projects/prj_bl001", "score": 0.97 },
{ "collection": "documents", "id": "doc_offer_ok", "title": "Blean — Orçamento aprovado", "subtitle": "P-26-00102 · 184,50 €", "href": "/v1/documents/doc_offer_ok", "score": 0.91 }
] }
Erro 503 unavailable se o Typesense não responder.