Skip to main content

O objeto Contrato

Campos calculados no retorno

Todos os endpoints de busca retornam os objetos imovel 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:
  1. Valida que o imóvel existe, pertence ao usuário e está DISPONIVEL
  2. Cria o documento do contrato
  3. Atualiza o status do imóvel para ALUGADO
  4. Gera uma cobrança de caução (se valorCaucao for informado)
  5. Gera automaticamente todas as parcelas de aluguel com base na duração real do contrato
string
required
ID do imóvel. Deve estar com status: DISPONIVEL.
string
required
ID do locatário cadastrado.
string
required
Data de início no formato YYYY-MM-DD.
string
required
Data de término. O número de parcelas é calculado a partir da diferença em meses.
number
required
Valor mensal do aluguel em reais.
number
required
Dia do mês para vencimento das parcelas (ex: 5 para dia 5).
number
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
Tentativas de criar contrato para um imóvel com status: ALUGADO retornam 400 Bad Request com a mensagem "Este imóvel já está alugado".

Listar contratos

Retorna todos os contratos do usuário com imovel 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 de configuracoes_notificacoes do usuário autenticado.
string
required
PDF do contrato codificado em base64.
Resposta 200
Pré-condições para o envio:
  • Locatário deve ter email cadastrado — caso contrário retorna 422
  • brevoApiKey e brevoEmailRemetente devem estar configurados em Configurações > Notificações — caso contrário retorna 422

Registrar contrato assinado (URL)

Salva a URL de um contrato assinado já hospedado (MinIO ou outro storage).
string
required
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


Encerrar contrato

Encerra o contrato e libera o imóvel para locação. Executa em transaction atômica.
Resposta 200
Erros possíveis:
422 — Vistoria de saída pendente
422 — Pendências financeiras