Anexos do produto
Lista os arquivos para baixar de um produto (manuais, fichas, certificados) e registra um download.
Um anexo é um arquivo ligado ao produto que o comprador pode baixar: manual, ficha técnica, certificado. O lojista cadastra os anexos no painel. Estas rotas listam os anexos de um produto e contam quando um é baixado.
A API não serve o arquivo. A listagem devolve file_url, e é nessa URL que o navegador baixa. A rota de download apenas incrementa o contador de downloads; chame-a quando o comprador clicar, antes ou depois de abrir a file_url.
Listar anexos
/api/v1/storefront/products/{id}/attachmentsPúblicaListar anexos de um produto
Parâmetros de caminho
iduuidobrigatórioId do produto.
Exemplo de requisição
Resposta
200Anexos retornados
Campos da resposta
itemsarrayAnexos do produto, por
position. Lista vazia se não há.totalintegerQuantidade de anexos.
items[].iduuidId do anexo: o
attachmentId da rota de download.items[].product_iduuidProduto dono do anexo.
items[].file_namestringNome do arquivo para exibir.
items[].file_urlstringURL do arquivo. Pode ser relativa à loja (
/uploads/...) ou absoluta.items[].file_sizeintegerTamanho em bytes. Pode ser
0 quando desconhecido.items[].mime_typestringTipo do arquivo (
application/pdf). Pode ser genérico (application/octet-stream).items[].descriptionstringTexto de apoio, como "Manual do usuário".
items[].positionintegerOrdem de exibição.
items[].download_countintegerQuantas vezes foi baixado, segundo o contador.
items[].created_atstringCriação, RFC 3339 (UTC).
updated_at é a última alteração.Registrar um download
/api/v1/storefront/attachments/{attachmentId}/downloadPúblicaContar um download de anexo
Parâmetros de caminho
attachmentIduuidobrigatórioId do anexo (
items[].id).A requisição não tem corpo.
Exemplo de requisição
Resposta
200Download contado
Campos da resposta
messagestringSempre
download counted. A resposta não traz a URL nem o arquivo: use a file_url da listagem.Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 400 | attachmentId não é um UUID | {"error":"invalid attachmentId","detail":"attachmentId must be a valid UUID"} |
| 404 | Anexo inexistente | {"error":"attachment not found"} |
| 500 | Falha ao gravar o contador | {"error":"failed to track download","detail":"..."} |
A listagem (GET) não devolve 404 para produto inexistente: responde 200 com items: []. Um {id} que não é UUID dá 500.