Arquivos
Lista, envia e exclui arquivos da biblioteca de mídia da loja.
Operações sobre arquivos já com dono. Exigem o privilégio manage_media.
Listar arquivos
/api/v1/admin/mediaAdminLista os arquivos da biblioteca com paginação
Ordenados por position crescente e, no empate, do mais recente para o mais antigo. Filtre por dono para ver só os arquivos de um produto, por exemplo.
Parâmetros de consulta
owner_typestringproduct, banner, vendor...). Igualdade exata.owner_idstringpageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
Campos da resposta
media[].iduuidmedia[].tenant_iduuidmedia[].owner_idstringmedia[].owner_typestringmedia[].filenamestringmedia[].content_typestringmedia[].sizeintegermedia[].urlstring/uploads/...) no armazenamento local.media[].altstringmedia[].positionintegermedia[].created_atstringtotalintegerpageintegerper_pageintegertotal_pagesintegerEnviar arquivo
/api/v1/admin/mediaAdminEnvia um arquivo e o associa a um dono
Requisição multipart/form-data. Há um alias idêntico em /api/v1/admin/media/upload, com o mesmo comportamento. O arquivo recebe position igual ao maior da lista daquele dono mais 1.
Campos do formulário
filefileobrigatórioowner_typestringobrigatórioproduct, banner, vendor, user...).owner_idstringobrigatório/api/v1/admin/media/uploadAdminAlias de POST /api/v1/admin/media
Mesmos campos, mesma resposta e mesmos erros de POST /api/v1/admin/media. Existe por compatibilidade com documentação e testes que usam este caminho.
Exemplo de requisição
Excluir arquivo
/api/v1/admin/media/{id}AdminExclui um arquivo do armazenamento e do cadastro
Remove o arquivo do disco ou do bucket e apaga o registro. Se a remoção física falhar, o registro é apagado mesmo assim e o erro só é registrado no log do servidor. Quem usa a URL (um produto, um banner) passa a ter imagem quebrada.
Parâmetros de caminho
iduuidobrigatórioErros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Requisição que não é multipart; owner_id, owner_type ou file ausente; tipo de arquivo não aceito | {"error":"owner_id is required"} ou {"error":"unsupported file type","detail":"Allowed types: JPEG, PNG, GIF, WebP, AVIF, SVG, PDF, MP4. Detected: text/html; charset=utf-8"} |
| 401 | Sem token ou token expirado | {"error":"missing authorization header"} |
| 403 | Sem o privilégio manage_media | {"error":"insufficient privileges","required":"manage_media"} |
| 500 | Falha ao gravar no armazenamento; excluir id inexistente ou que não é UUID | {"error":"failed to delete file","detail":"..."} |