Skip to main content
PUT
{pre_signed_url}
/
{file_name}
# 1. Criar arquivo JSONL de exemplo
echo '{"produto": "Notebook", "preco": 2500.00, "categoria": "Eletrônicos"}
{"produto": "Mouse", "preco": 50.00, "categoria": "Periféricos"}
{"produto": "Teclado", "preco": 120.00, "categoria": "Periféricos"}' > produtos.jsonl

# 2. Gerar token de upload (válido por 15 minutos)
TOKEN_RESPONSE=$(curl -X POST \
  "https://api.datasnap.com.br/api/v1/schemas/meu-schema/generate-upload-token" \
  -H "Authorization: Bearer SEU_TOKEN_AQUI" \
  -H "Content-Type: application/json" \
  -d '{"minutes": 15}')

echo "Token gerado:"
echo $TOKEN_RESPONSE | jq '.'

# 3. Extrair URL de upload
UPLOAD_URL=$(echo $TOKEN_RESPONSE | jq -r '.upload_url')

# 4. Fazer upload direto para Oracle Cloud Storage
echo "Fazendo upload..."
curl -X PUT \
  "${UPLOAD_URL}/produtos.jsonl" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@produtos.jsonl"

echo "Upload concluído!"
{
  "uploaded": [
    {
      "id": 456,
      "file_name": "dados.jsonl",
      "size_bytes": 1048576,
      "md5": "d41d8cd98f00b204e9800998ecf8427e",
      "schema_slug": "meu-schema",
      "schema_version": "1.0.0",
      "validation": "ok",
      "errors": [],
      "upload_status": "pending"
    },
    {
      "file_name": "invalido.jsonl",
      "size_bytes": 2048,
      "md5": "098f6bcd4621d373cade4e832627b4f6",
      "schema_slug": "meu-schema",
      "schema_version": "1.0.0",
      "validation": "error",
      "errors": [
        "A linha 5 do arquivo não é um JSON válido. O arquivo deve estar no formato JSONL (um objeto JSON por linha)."
      ]
    },
    {
      "id": 123,
      "file_name": "duplicado.jsonl",
      "size_bytes": 5120,
      "md5": "5d41402abc4b2a76b9719d911017c592",
      "schema_slug": "meu-schema",
      "schema_version": "1.0.0",
      "validation": "ok",
      "errors": ["Arquivo já foi enviado anteriormente."],
      "duplicate": true,
      "upload_status": "completed"
    }
  ],
  "success": true
}

Visão Geral

Este processo permite fazer upload de arquivos JSONL utilizando URLs pré-assinadas obtidas através do endpoint de geração de token. O upload é feito diretamente para o Oracle Cloud Storage via método HTTP PUT.

Método

Upload via HTTP PUT para URL pré-assinada

Performance

Upload direto para Oracle Cloud Storage

Segurança

URLs temporárias com expiração automática

Escalabilidade

Suporte a arquivos de qualquer tamanho

Processo de Upload

1

Gerar Token de Upload

Use o endpoint POST /api/v1/schemas/{slug}/generate-upload-token para obter uma URL pré-assinada
2

Fazer Upload Direto

Use a URL retornada com método PUT para fazer upload direto do arquivo
3

Processamento Assíncrono

O arquivo é processado em segundo plano e fica disponível para consulta

Método HTTP

Parâmetros da URL

pre_SIGNED_url
string
required
URL pré-assinada obtida do endpoint de geração de token
file_name
string
required
Nome do arquivo JSONL a ser enviado (deve incluir extensão .jsonl)

Exemplo de URL

PUT https://objectstorage.sa-saopaulo-1.oraclecloud.com/p/.../dados.jsonl

Corpo da Requisição

file
binary
required
Conteúdo binário do arquivo JSONL a ser enviado

Como Funciona

O upload de arquivos utiliza um sistema de URLs pré-assinadas que oferece:

Performance

Upload direto para Oracle Cloud Storage

Segurança

URLs temporárias com expiração automática

Escalabilidade

Suporte a arquivos de qualquer tamanho (recomendamos arquivos de até 10MB para máxima performance)

Eficiência

Processamento assíncrono em segundo plano

Fluxo de Upload

1

1. Gerar Token

Primeiro, gere um token de upload:
curl -X POST \
  "https://api.datasnap.com.br/api/v1/schemas/meu-schema/generate-upload-token" \
  -H "Authorization: Bearer SEU_TOKEN_AQUI" \
  -H "Content-Type: application/json" \
  -d '{"minutes": 15}'
2

2. Extrair URL

Da resposta, extraia a upload_url:
UPLOAD_URL=$(echo $TOKEN_RESPONSE | jq -r '.upload_url')
3

3. Fazer Upload

Use a URL para upload via PUT:
curl -X PUT \
  "${UPLOAD_URL}/dados.jsonl" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@dados.jsonl"

Requisitos de Formato de Arquivo

Os arquivos devem estar no formato JSONL (JSON Lines) onde cada linha contém um objeto JSON válido.

Exemplo JSONL Válido

{"nome": "João Silva", "idade": 30, "cidade": "São Paulo"}
{"nome": "Maria Santos", "idade": 25, "cidade": "Rio de Janeiro"}
{"nome": "Carlos Oliveira", "idade": 35, "cidade": "Belo Horizonte"}

Exemplos Inválidos

// Inválido - JSON incorreto
{nome: "João", idade: 30}

// Inválido - múltiplos objetos em uma linha
{"nome": "João"} {"idade": 30}

// Inválido - formato array em vez de linha por linha
[{"nome": "João"}, {"nome": "Maria"}]

Exemplos de Implementação

# 1. Criar arquivo JSONL de exemplo
echo '{"produto": "Notebook", "preco": 2500.00, "categoria": "Eletrônicos"}
{"produto": "Mouse", "preco": 50.00, "categoria": "Periféricos"}
{"produto": "Teclado", "preco": 120.00, "categoria": "Periféricos"}' > produtos.jsonl

# 2. Gerar token de upload (válido por 15 minutos)
TOKEN_RESPONSE=$(curl -X POST \
  "https://api.datasnap.com.br/api/v1/schemas/meu-schema/generate-upload-token" \
  -H "Authorization: Bearer SEU_TOKEN_AQUI" \
  -H "Content-Type: application/json" \
  -d '{"minutes": 15}')

echo "Token gerado:"
echo $TOKEN_RESPONSE | jq '.'

# 3. Extrair URL de upload
UPLOAD_URL=$(echo $TOKEN_RESPONSE | jq -r '.upload_url')

# 4. Fazer upload direto via PUT
echo "Fazendo upload..."
curl -X PUT \
  "${UPLOAD_URL}/produtos.jsonl" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@produtos.jsonl"

echo "Upload concluído!"

Resposta do Upload

O upload via PUT retorna diretamente o status HTTP:
200
Success
Upload realizado com sucesso - arquivo enviado para Oracle Cloud Storage
401
Error
Não autorizado - URL de upload expirada ou inválida
413
Error
Arquivo muito grande - tamanho excede limite do storage
# 1. Criar arquivo JSONL de exemplo
echo '{"produto": "Notebook", "preco": 2500.00, "categoria": "Eletrônicos"}
{"produto": "Mouse", "preco": 50.00, "categoria": "Periféricos"}
{"produto": "Teclado", "preco": 120.00, "categoria": "Periféricos"}' > produtos.jsonl

# 2. Gerar token de upload (válido por 15 minutos)
TOKEN_RESPONSE=$(curl -X POST \
  "https://api.datasnap.com.br/api/v1/schemas/meu-schema/generate-upload-token" \
  -H "Authorization: Bearer SEU_TOKEN_AQUI" \
  -H "Content-Type: application/json" \
  -d '{"minutes": 15}')

echo "Token gerado:"
echo $TOKEN_RESPONSE | jq '.'

# 3. Extrair URL de upload
UPLOAD_URL=$(echo $TOKEN_RESPONSE | jq -r '.upload_url')

# 4. Fazer upload direto para Oracle Cloud Storage
echo "Fazendo upload..."
curl -X PUT \
  "${UPLOAD_URL}/produtos.jsonl" \
  -H "Content-Type: application/octet-stream" \
  --data-binary "@produtos.jsonl"

echo "Upload concluído!"
{
  "uploaded": [
    {
      "id": 456,
      "file_name": "dados.jsonl",
      "size_bytes": 1048576,
      "md5": "d41d8cd98f00b204e9800998ecf8427e",
      "schema_slug": "meu-schema",
      "schema_version": "1.0.0",
      "validation": "ok",
      "errors": [],
      "upload_status": "pending"
    },
    {
      "file_name": "invalido.jsonl",
      "size_bytes": 2048,
      "md5": "098f6bcd4621d373cade4e832627b4f6",
      "schema_slug": "meu-schema",
      "schema_version": "1.0.0",
      "validation": "error",
      "errors": [
        "A linha 5 do arquivo não é um JSON válido. O arquivo deve estar no formato JSONL (um objeto JSON por linha)."
      ]
    },
    {
      "id": 123,
      "file_name": "duplicado.jsonl",
      "size_bytes": 5120,
      "md5": "5d41402abc4b2a76b9719d911017c592",
      "schema_slug": "meu-schema",
      "schema_version": "1.0.0",
      "validation": "ok",
      "errors": ["Arquivo já foi enviado anteriormente."],
      "duplicate": true,
      "upload_status": "completed"
    }
  ],
  "success": true
}

Códigos de Resposta

CódigoSignificadoDescrição
200SucessoUpload realizado com sucesso
401Não autorizadoURL de upload expirada ou inválida
413Arquivo muito grandeTamanho excede limite do storage
422Formato inválidoArquivo não está no formato JSONL

Boas Práticas

Valide arquivos localmente - Teste o formato JSONL antes do upload para evitar erros.
Use nomes únicos - Evite conflitos dando nomes descritivos e únicos aos arquivos.
Monitore expiração - URLs pré-assinadas expiram em 1-60 minutos. Complete o upload dentro do prazo.
URLs são temporárias - Certifique-se de que o upload seja concluído antes da expiração da URL.

Limites Técnicos

CaracterísticaValor/LimiteDescrição
Tamanho de arquivoSem limite práticoSuporte a arquivos de qualquer tamanho
Duração do token1-60 minutosTempo de validade da URL pré-assinada
Método HTTPPUT obrigatórioUse apenas PUT para upload
FormatoJSONL obrigatórioUm objeto JSON por linha
Para máxima performance, recomendamos dividir arquivos muito grandes (>10MB) em múltiplos uploads menores.

Próximos Passos

Após o upload bem-sucedido:
  1. ✅ Upload concluído - Arquivo enviado para Oracle Cloud Storage
  2. 🔄 Processamento em background - Dados sendo preparados para consulta
  3. 📊 Consulta disponível - Use endpoint de consultas para analisar dados
  4. 📁 Monitoramento - Liste arquivos para verificar status de processamento

Endpoints Relacionados