Batch Upload Files

Upload de múltiplos arquivos para o storage

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 "[email protected]" \
  -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": "[email protected]",
  "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