Biblioteca de mídia
Como a loja guarda imagens, PDFs e vídeos, o fluxo de envio direto e temporário, e o mapa das rotas de mídia.
A biblioteca de mídia guarda os arquivos da loja: fotos de produto, banners, logos de seller (lojista), PDFs e vídeos curtos. Cada arquivo pertence a um dono (um produto, um banner, um seller...) e recebe uma URL pública. Esta seção cobre o envio, a listagem e a exclusão de arquivos, o envio temporário usado em formulários que ainda não foram salvos e duas ferramentas de edição de imagem. Todas as rotas exigem token de administrador com o privilégio manage_media.
Como funciona
Há dois caminhos de envio:
- Envio direto
POST /api/v1/admin/mediacom o arquivo e o dono. Serve quando o dono já existe (um produto já salvo, por exemplo). Devolve o arquivo criado. - Envio temporário
POST /api/v1/admin/media/tempguarda o arquivo sem dono e devolve umidtemporário. Serve para formulários de criação, em que o produto ainda não existe. Quando o formulário é salvo,POST /api/v1/admin/media/commitanexa os arquivos ao dono. Temporários não confirmados são limpos depois de 24 horas.
Conceitos-chave
Dono do arquivo
owner_type diz a que o arquivo pertence e owner_id identifica o registro. Valores usados pela plataforma incluem product, banner, vendor e user; o assistente de IA grava como intelligence. A listagem filtra por esses dois campos.
Armazenamento
A loja pode guardar os arquivos no disco do servidor ou em um bucket S3 com CDN, conforme a configuração da plataforma. O nome gravado é sanitizado e recebe um UUID de prefixo; a extensão vem do tipo detectado, não do nome enviado.
Vitrine e área do cliente
O mesmo envio é usado por outras áreas (painel do seller, área do cliente), com regras próprias por dono. Esta seção descreve o uso pelo administrador.
Endpoints
| Método | Caminho | Para que serve | Auth |
|---|---|---|---|
| GET | /api/v1/admin/media | Listar arquivos | admin |
| POST | /api/v1/admin/media | Enviar arquivo | admin |
| POST | /api/v1/admin/media/upload | Enviar arquivo (alias) | admin |
| DELETE | /api/v1/admin/media/{id} | Excluir arquivo | admin |
| POST | /api/v1/admin/media/temp | Enviar arquivo temporário | admin |
| POST | /api/v1/admin/media/commit | Confirmar temporários | admin |
| DELETE | /api/v1/admin/media/temp/{id} | Descartar temporário | admin |
| POST | /api/v1/admin/media/remove-bg | Remover fundo | admin |
| POST | /api/v1/admin/media/trim-borders | Aparar bordas | admin |
Erros comuns
- Enviar JSON em vez de
multipart/form-data. O envio exige multipart; JSON retorna 400failed to parse multipart form. - Esquecer
owner_idouowner_typeno envio direto. Retorna 400. Use o envio temporário quando não há dono. - Mandar um arquivo com extensão certa e conteúdo errado. O tipo vem do conteúdo; um
.jpgque na verdade é HTML é recusado com 400. - Acima do limite de tamanho. 10 MB no direto e 50 MB no temporário; acima disso a leitura falha com 400.
- Esperar 404 ao excluir id inexistente. Retorna 500.
- Usar a URL relativa fora da vitrine. Prefixe com o endereço da loja.