VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Página de produto

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

GET/api/v1/storefront/products/{id}/attachmentsPública

Listar anexos de um produto

Parâmetros de caminho

iduuidobrigatório
Id do produto.

Exemplo de requisição

Resposta

200Anexos retornados

Campos da resposta

itemsarray
Anexos do produto, por position. Lista vazia se não há.
totalinteger
Quantidade de anexos.
items[].iduuid
Id do anexo: o attachmentId da rota de download.
items[].product_iduuid
Produto dono do anexo.
items[].file_namestring
Nome do arquivo para exibir.
items[].file_urlstring
URL do arquivo. Pode ser relativa à loja (/uploads/...) ou absoluta.
items[].file_sizeinteger
Tamanho em bytes. Pode ser 0 quando desconhecido.
items[].mime_typestring
Tipo do arquivo (application/pdf). Pode ser genérico (application/octet-stream).
items[].descriptionstring
Texto de apoio, como "Manual do usuário".
items[].positioninteger
Ordem de exibição.
items[].download_countinteger
Quantas vezes foi baixado, segundo o contador.
items[].created_atstring
Criação, RFC 3339 (UTC). updated_at é a última alteração.

Registrar um download

POST/api/v1/storefront/attachments/{attachmentId}/downloadPública

Contar um download de anexo

Parâmetros de caminho

attachmentIduuidobrigatório
Id do anexo (items[].id).

A requisição não tem corpo.

Exemplo de requisição

Resposta

200Download contado

Campos da resposta

messagestring
Sempre download counted. A resposta não traz a URL nem o arquivo: use a file_url da listagem.

Erros

StatusQuandoExemplo de corpo
400attachmentId não é um UUID{"error":"invalid attachmentId","detail":"attachmentId must be a valid UUID"}
404Anexo inexistente{"error":"attachment not found"}
500Falha 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.

O contador é de quem chamar

Qualquer cliente pode chamar o POST e aumentar o contador: ele serve para estatística, não para controle de acesso. Se o arquivo precisa ser protegido, não o publique como anexo da vitrine.

URLs relativas

Quando file_url começa com /, prefixe o domínio da loja ($BASE_URL) para montar o link de download.

Veja também

  • Consultar produto
  • Vídeos e replays
Anterior
Características do produto
Próxima
Vídeos e replays
Nesta página
  • Listar anexos
  • Exemplo de requisição
  • Resposta
  • Registrar um download
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também
bash
curl "$BASE_URL/api/v1/storefront/products/34a3bed9-c40d-4519-801f-5cae027eac2a/attachments"
bash
curl -X POST "$BASE_URL/api/v1/storefront/attachments/2f9a1719-9f74-463c-8e5e-08a15328afa0/download"
json
{
  "total": 2,
  "items": [
    {
      "id": "2f9a1719-9f74-463c-8e5e-08a15328afa0",
      "product_id": "34a3bed9-c40d-4519-801f-5cae027eac2a",
      "file_name": "Ficha.pdf",
      "file_url": "/uploads/ficha.pdf",
      "file_size": 0,
      "mime_type": "application/octet-stream",
      "description": "",
      "position": 0,
      "download_count": 0,
      "created_at": "2026-10-11T20:55:15.840926Z",
      "updated_at": "2026-10-11T20:55:21.528944Z"
    },
    {
      "id": "fa4a22a6-2d6b-4ffa-80a2-f573f1324360",
      "product_id": "34a3bed9-c40d-4519-801f-5cae027eac2a",
      "file_name": "Manual.pdf",
      "file_url": "https://example.com/files/manual.pdf",
      "file_size": 120400,
      "mime_type": "application/pdf",
      "description": "Manual do usuário",
      "position": 1,
      "download_count": 0,
      "created_at": "2026-10-11T20:55:15.832387Z",
      "updated_at": "2026-10-11T20:55:21.530267Z"
    }
  ]
}
json
{ "message": "download counted" }