Arquitetura de storage
O módulo de upload usa MinIO (compatível com S3) com dois buckets de propósitos distintos:Limites
Status do MinIO
Endpoint público — não requer autenticação. Útil para verificar se o storage está operacional antes de iniciar uploads.Resposta 200
Documentos do locatário
Upload
Aceita até 4 campos simultâneos viamultipart/form-data. Todos vão para o bucket privado.
Resposta 201
Gerar URL de visualização
string
required
Tipo do documento:
cpf, rg, comprovante, outros.number
default:"0"
Índice do arquivo (somente para
tipo=outros).Resposta 200
Contrato assinado
Aceita apenas PDF. Vai para o bucket privado e atualiza o campocontratoAssinadoKey no Firestore.
Resposta 201
Gerar URL de visualização
Fotos do imóvel
Aceita até 10 arquivos por requisição. URLs permanentes no bucket público.Resposta 201
Listar fotos
Mídias de inspeção
Aceita até 20 arquivos (fotos e vídeos). A API separa automaticamente emfotosKeys e videosKeys com base no mimetype.
URL de vídeo
Valida o vínculo entre a key e a inspeção antes de retornar a URL.Fotos de inventário
Aceita até 10 arquivos por item. O campofotosKeys armazena tanto fotos quanto vídeos.
Deletar arquivo
Remove o arquivo do MinIO e limpa a referência no Firestore em uma única operação.string
required
Caminho completo do arquivo no MinIO (ex:
uid123/imoveis/abc123/foto.jpg).string
"true" se o arquivo está no bucket público. Padrão: bucket privado.Coleções válidas
Resposta 200
A key deve sempre começar com o
userId do usuário autenticado. Tentativas de deletar arquivos de outros usuários retornam 403 Forbidden.