Skip to main content

Isolamento de dados (multi-tenant)

Cada requisição autenticada opera exclusivamente sobre os dados do usuário identificado pelo cookie de sessão. O userId nunca vem do body da requisição — ele é extraído do session cookie pelo middleware verificarToken e aplicado automaticamente em todas as queries. Isso significa que mesmo conhecendo o id de um recurso de outro usuário, a API retornará 403 Forbidden.

Datas

Todas as datas são trafegadas como strings no formato ISO 8601:
2025-08-15T00:00:00.000Z
Datas de vencimento (dataVencimento) podem ser enviadas apenas como YYYY-MM-DD — a API normaliza internamente.

Ordenação

A API não usa orderBy no Firestore para evitar a criação de índices compostos obrigatórios. Toda ordenação é feita em memória após a query. O comportamento padrão de cada endpoint é descrito na sua documentação.

Status de Parcelas (Financeiro)

O campo status de parcelas financeiras é auto-gerenciado. Ao buscar qualquer listagem do módulo /financeiro, a API verifica automaticamente parcelas com status PENDENTE e dataVencimento anterior a hoje — e as atualiza para ATRASADO em batch antes de retornar a resposta. Você nunca precisa chamar um endpoint separado para “vencer” parcelas.

Soft Delete

O módulo de Inventário usa soft delete. Itens removidos ficam com ativo: false no banco e são excluídos das listagens normais, mas preservados no histórico de vistorias.

Uploads

Arquivos (fotos, vídeos, documentos) são gerenciados via MinIO com URLs pressinadas. O fluxo é sempre:
  1. Fazer upload via /upload/*
  2. Receber a URL pública ou pressinada
  3. Salvar a URL no recurso correspondente via PATCH
Veja o módulo Upload para detalhes.