Pular para o conteúdo principal

Batch Upload Files

Realiza upload de múltiplos arquivos para o storage em uma única requisição.

Endpoint​

POST /storage-explorer/storage/upload/batch

Permissões Requeridas​

  • STORAGE_EXPLORER.WRITE

Content-Type​

multipart/form-data

Form Data Parameters​

ParâmetroTipoObrigatórioDescrição
filesfile[]SimArquivos para upload (múltiplos)
folder_pathstringNãoCaminho da pasta destino (padrão: "/")

Formatos Suportados​

  • CSV (.csv)
  • Excel (.xlsx, .xls)
  • JSON (.json)
  • Parquet (.parquet)
  • TXT (.txt)

Exemplo de Requisição​

curl -X POST "https://maestro.dadosfera.ai/storage-explorer/storage/upload/batch" \
-H "Authorization: <JWT_TOKEN>" \
-F "files=@orders_2024_01.csv" \
-F "files=@products_jan.xlsx" \
-F "files=@events.json" \
-F "folder_path=/raw/sales"

Exemplo com Python​

import requests

url = "https://maestro.dadosfera.ai/storage-explorer/storage/upload/batch"
headers = {
"Authorization": f"Bearer {jwt_token}"
}

files = [
('files', ('orders_2024_01.csv', open('orders_2024_01.csv', 'rb'), 'text/csv')),
('files', ('products_jan.xlsx', open('products_jan.xlsx', 'rb'), 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')),
('files', ('events.json', open('events.json', 'rb'), 'application/json'))
]

data = {
'folder_path': '/raw/sales'
}

response = requests.post(url, headers=headers, files=files, data=data)

Exemplo de Resposta​

Success (201 Created):

{
"upload_id": "upl_m1n2o3p4",
"folder_path": "/raw/sales",
"uploaded_at": "2024-01-15T10:30:00Z",
"uploaded_by": "user@dadosfera.ai",
"total_files": 3,
"total_size_bytes": 933888,
"status": "completed",
"files": [
{
"file_name": "orders_2024_01.csv",
"file_path": "/raw/sales/orders_2024_01.csv",
"file_size_bytes": 524288,
"file_format": "csv",
"dataset_id": "ds_x1y2z3",
"status": "success",
"row_count": 5420,
"column_count": 5
},
{
"file_name": "products_jan.xlsx",
"file_path": "/raw/sales/products_jan.xlsx",
"file_size_bytes": 153600,
"file_format": "excel",
"dataset_id": "ds_a2b3c4",
"status": "success",
"row_count": 850,
"column_count": 8,
"sheets": ["Products"]
},
{
"file_name": "events.json",
"file_path": "/raw/sales/events.json",
"file_size_bytes": 256000,
"file_format": "json",
"dataset_id": "ds_b3c4d5",
"status": "success",
"row_count": 1200,
"column_count": 12
}
],
"errors": []
}

Partial Success (207 Multi-Status):

{
"upload_id": "upl_m1n2o3p4",
"status": "partial",
"total_files": 3,
"successful_files": 2,
"failed_files": 1,
"files": [
{
"file_name": "orders_2024_01.csv",
"status": "success",
"dataset_id": "ds_x1y2z3"
},
{
"file_name": "products_jan.xlsx",
"status": "success",
"dataset_id": "ds_a2b3c4"
},
{
"file_name": "corrupted.json",
"status": "error",
"error": "Invalid JSON format"
}
]
}

Limites​

  • Tamanho máximo por arquivo: 500 MB
  • Número máximo de arquivos por upload: 100
  • Tamanho total máximo por requisição: 5 GB

Códigos de Status​

CódigoDescrição
201Todos os arquivos enviados com sucesso
207Upload parcial (alguns arquivos falharam)
400Parâmetros inválidos ou arquivos ausentes
401Não autenticado
403Sem permissão STORAGE_EXPLORER.WRITE
413Arquivo ou requisição muito grande
415Formato de arquivo não suportado