O objeto Contrato
Campos calculados no retorno
Todos os endpoints de busca retornam os objetosimovel e locatario embutidos no contrato, populados em paralelo via Promise.all. Nenhuma query extra é necessária no frontend.
Criar contrato
A criação é executada em uma Firestore Transaction, garantindo consistência total. Em uma única operação atômica:- Valida que o imóvel existe, pertence ao usuário e está
DISPONIVEL - Cria o documento do contrato
- Atualiza o status do imóvel para
ALUGADO - Gera uma cobrança de caução (se
valorCaucaofor informado) - Gera automaticamente todas as parcelas de aluguel com base na duração real do contrato
ID do imóvel. Deve estar com
status: DISPONIVEL.ID do locatário cadastrado.
Data de início no formato
YYYY-MM-DD.Data de término. O número de parcelas é calculado a partir da diferença em meses.
Valor mensal do aluguel em reais.
Dia do mês para vencimento das parcelas (ex:
5 para dia 5).Valor do depósito caução. Se informado e maior que zero, cria uma cobrança do tipo
CAUCAO com vencimento na dataInicio.Resposta 201
Listar contratos
Retorna todos os contratos do usuário comimovel e locatario populados.
Buscar contrato por ID
Enviar contrato por e-mail
Envia o PDF do contrato como anexo para o e-mail do locatário via Brevo. As credenciais do Brevo são lidas deconfiguracoes_notificacoes do usuário autenticado.
PDF do contrato codificado em base64.
Resposta 200
- Locatário deve ter
emailcadastrado — caso contrário retorna422 brevoApiKeyebrevoEmailRemetentedevem estar configurados em Configurações > Notificações — caso contrário retorna422
Registrar contrato assinado (URL)
Salva a URL de um contrato assinado já hospedado (MinIO ou outro storage).URL pública ou pressinada do PDF assinado.
Para fazer o upload direto do arquivo PDF, use
POST /upload/contrato/:contratoId. Esse endpoint salva no MinIO e registra a key automaticamente.Verificar status de encerramento
Retorna um diagnóstico completo sobre as condições para encerrar o contrato — sem fazer nenhuma alteração.Resposta 200
Regras de encerramento
| Condição | Obrigatória |
|---|---|
| Vistoria de saída registrada | Sim |
Parcelas PENDENTE/ATRASADO zeradas | Sim |
Encerrar contrato
Encerra o contrato e libera o imóvel para locação. Executa em transaction atômica.Resposta 200
422 — Vistoria de saída pendente
422 — Pendências financeiras