Arquitetura de storage
O módulo de upload usa MinIO (compatível com S3) com dois buckets de propósitos distintos:| Bucket | Visibilidade | Acesso | Usado para |
|---|---|---|---|
MINIO_BUCKET | Privado | Presigned URL (expira em 15min) | CPF, RG, comprovante, contratos assinados |
MINIO_BUCKET_FOTOS | Público | URL permanente | Fotos de imóveis, inspeções, inventário |
Limites
| Parâmetro | Valor |
|---|---|
| Tamanho máximo | 20MB por arquivo |
| Tipos aceitos | image/jpeg, image/png, image/webp, application/pdf, video/mp4, video/quicktime |
| Máx. arquivos | 10 (imóvel, inventário) / 20 (inspeção) |
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.
| Campo | Descrição |
|---|---|
doc_cpf | Foto ou scan do CPF (1 arquivo) |
doc_rg | Foto ou scan do RG (1 arquivo) |
doc_comprovante | Comprovante de residência (1 arq.) |
doc_outros | Outros documentos (até 10) |
Resposta 201
Gerar URL de visualização
Tipo do documento:
cpf, rg, comprovante, outros.Í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.Caminho completo do arquivo no MinIO (ex:
uid123/imoveis/abc123/foto.jpg)."true" se o arquivo está no bucket público. Padrão: bucket privado.Coleções válidas
| Valor | Firestore Collection |
|---|---|
locatario | locatarios |
imovel | imoveis |
inspecao | inspecoes |
inventario | inventario |
contrato | contratos |
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.