VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API legada/Referência completa/Catálogo do app do vendedor

POSTUpload de arquivo

Envia um arquivo (imagem, PDF) do app do seller e o liga a um produto ou a outro dono.

Recebe um arquivo por multipart/form-data, guarda-o no armazenamento da loja e devolve a URL. O app usa para as fotos do produto: primeiro cria o produto (Produto: escrita), depois envia cada arquivo apontando para o product_id.

POST/api/v1.0/vendor_uploadSeller

Enviar um arquivo

Corpo da requisição (multipart/form-data)

filefileobrigatório
O arquivo. O nome e o tipo (Content-Type da parte) são guardados.
owner_idstringpadrão: temp
Id do dono do arquivo. Para uma foto de produto, o product_id. Sem ele, o arquivo fica em uma área temporária (temp) e não se liga a nenhum produto.
owner_typestringpadrão: product
Tipo do dono (product).

Cabeçalhos

Authorizationstringobrigatório
Basic base64(e-mail:chave_de_api) ou Bearer $TOKEN do usuário de um seller ativo.
Content-Typestringobrigatório
multipart/form-data, com o boundary. A maioria dos clientes HTTP monta sozinha.
POST/api/vendor_uploadSeller

Alias de POST /api/v1.0/vendor_upload

Mesmo corpo, mesma resposta e mesmo comportamento de POST /api/v1.0/vendor_upload. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.

POST/api/v1.0/vn_upload_fileSeller

Alias de POST /api/v1.0/vendor_upload

Mesmo corpo, mesma resposta e mesmo comportamento de POST /api/v1.0/vendor_upload.

POST/api/vn_upload_fileSeller

Alias de POST /api/v1.0/vendor_upload

Mesmo corpo, mesma resposta e mesmo comportamento de POST /api/v1.0/vendor_upload. Nesta URL (sem /v1.0), os ids de entidades usam o formato numérico legado.

Exemplo de requisição

bash
curl -u "$EMAIL:$API_KEY" -X POST "$BASE_URL/api/v1.0/vendor_upload" \
  -F "file=@camisa.png;type=image/png" \
  -F "owner_type=product" \
  -F "owner_id=3a2e6c1d-8f4b-4e55-9d0a-7b1c2e3f4a5b"

Resposta

200Arquivo enviado
json
{
  "status": 200,
  "data": {
    "success": true,
    "message": "File uploaded successfully",
    "file": {
      "id": "7c0f2b9e-1d44-4c0a-b6a4-2b3c4d5e6f70",
      "url": "/uploads/dfe2555e/product/3a2e6c1d/9f1c_camisa.png",
      "filename": "camisa.png"
    }
  }
}

Campos da resposta

data.file.iduuid
Id do registro do arquivo.
data.file.urlstring
URL do arquivo, relativa ao domínio da loja (ou absoluta, se a loja usa CDN). Junte ao BASE_URL quando começar por /.
data.file.filenamestring
Nome guardado. O servidor limpa o nome enviado e escolhe a extensão pelo tipo; ela pode diferir da original.

Erros

StatusQuandoCorpo
200Corpo que não é multipart válido{"status": 200, "data": {"success": false, "message": "Invalid file upload"}}
200Parte file ausente{"status": 200, "data": {"success": false, "message": "No file provided"}}
200Falha ao ler o arquivo{"status": 200, "data": {"success": false, "message": "Failed to read file"}}
200Armazenamento recusou{"status": 200, "data": {"success": false, "message": "Upload failed: <motivo>"}}
200Serviço de upload fora do ar{"status": 200, "data": {"success": false, "message": "Upload service not available"}}
200Conta que não é de seller ativo{"status": 200, "data": {"success": false, "message": "User is not a vendor", "action": "logout"}}
401Sem credencial ou credencial inválida{"message": "Authentication required. Use HTTP Basic with email:api_key or Bearer <jwt>.", "status": 401}
403Usuário cliente (não seller nem administrador){"message": "Forbidden: vendor scope required", "status": 403}
O dono do arquivo vem do corpo

O owner_id é o que você manda: a rota não confere se o produto é do seller. Mande o product_id correto. Um arquivo enviado sem owner_id fica em temp e não aparece nos anexos de nenhum produto.

Veja também

  • Opções, anexos e obrigatórios
  • Produto: escrita
Anterior
Opções, anexos e obrigatórios
Próxima
Mix de produtos
Nesta página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também