Pular para o conteúdo principal

File Storage

O Building Block File Storage fornece funcionalidades para upload, download e gerenciamento de arquivos usando Amazon S3.

Visão Geral

O módulo File Storage e tenant-scoped e oferece:

  • Upload de arquivos via URLs pré-assinadas
  • Download seguro com URLs temporarias
  • Categorização de arquivos por tipo
  • Associação de arquivos a entidades de negócio

Base URL

https://file-storage.stg.catalisa.app

Recursos

RecursoDescrição
ArquivosUpload, download e gerenciamento de arquivos

Endpoints

MétodoEndpointDescriçãoPermissão
POST/api/v1/filesCriar arquivo (obter URL de upload)FILES_CREATE
GET/api/v1/filesListar arquivosFILES_READ
GET/api/v1/files/:idObter arquivoFILES_READ
POST/api/v1/files/:id/confirm-uploadConfirmar uploadFILES_CREATE
GET/api/v1/files/:id/upload-urlObter nova URL de uploadFILES_CREATE
GET/api/v1/files/:id/download-urlObter URL de downloadFILES_READ
DELETE/api/v1/files/:idExcluir arquivoFILES_DELETE

Tipos de Arquivo Suportados

MIME TypeExtensãoDescrição
application/pdf.pdfDocumentos PDF
image/png.pngImagens PNG
image/jpeg.jpg, .jpegImagens JPEG
application/octet-stream*Binario generico

Categorias de Arquivo

CategoriaDescriçãoUso Comum
IDENTITYDocumentos de identidadeRG, CNH, passaporte
ADDRESSComprovante de endereçoConta de luz, extrato
INCOMEComprovante de rendaHolerite, IR, extrato
CONTRACTContratosCCB, termos
COLLATERALGarantiasDocumentos de garantia
OTHEROutrosDocumentos diversos

Fluxo de Upload

O upload de arquivos segue um fluxo de 3 etapas:

Etapas do Upload

1. Criar registro do arquivo

  • Endpoint: POST /api/v1/files
  • Cliente envia metadados (nome, mimeType, categoria, etc.)
  • API cria registro no banco de dados com uploaded = false
  • API gera URL pré-assinada do S3 para upload
  • API retorna { uploadUrl } para o cliente

2. Upload direto para S3

  • Endpoint: PUT {uploadUrl} (URL pré-assinada do S3)
  • Cliente faz upload do arquivo binário diretamente para o S3
  • Não requer autenticação adicional (URL já é assinada)
  • S3 armazena o arquivo
  • S3 retorna 200 OK ao cliente

3. Confirmar upload

  • Endpoint: POST /api/v1/files/:id/confirm-upload
  • Cliente confirma que o upload foi concluído
  • API marca o registro como uploaded = true
  • API retorna confirmação

Sequência Completa

Atores: Cliente, API, S3

Passo 1 - Criar registro:

  • Cliente → API: POST /api/v1/files com metadados
    • API cria registro no banco
    • API gera URL pré-assinada do S3
    • API retorna { uploadUrl, id }

Passo 2 - Upload para S3:

  • Cliente → S3: PUT {uploadUrl} com arquivo binário
    • S3 armazena o arquivo
    • S3 retorna 200 OK

Passo 3 - Confirmar upload:

  • Cliente → API: POST /api/v1/files/:id/confirm-upload
    • API marca uploaded = true
    • API retorna confirmação { uploaded: true }

URLs Pre-assinadas

As URLs de upload e download são pré-assinadas pelo S3, o que significa:

  • Validas por tempo limitado (15 minutos)
  • Não requerem autenticação adicional
  • Permitem acesso direto ao S3
Atenção
  • URLs de upload expiram em 15 minutos
  • URLs de download expiram em 15 minutos
  • Se a URL expirar, solicite uma nova

Estrutura de Dados

Arquivo

{
"data": {
"type": "files",
"id": "uuid",
"attributes": {
"name": "documento.pdf",
"mimeType": "application/pdf",
"sizeBytes": 1048576,
"category": "IDENTITY",
"businessId": "origination-123",
"uploaded": true,
"createdBy": "user-uuid",
"createdAt": "2024-01-15T10:30:00Z"
}
}
}