Pular para o conteúdo
Menu de documentos

Comece agora

Relatos de problemas

Como uma automação lista os relatórios de problemas abertos enviados de páginas TradeCatalog conectadas.

Funcionários de fornecedores autenticados e compradores podem enviar um bug ou um comentário de qualquer página do aplicativo. Cada relato é armazenado com o status aberto e enviado por e-mail para Happy Webs.

Esta página é para a automação que coleta esses relatos. Não é uma chave de workspace API, e não está no documento OpenAPI.

AutenticarLink para esta seção#

A solicitação usa um token de portador. O token é o segredo do Worker FEEDBACK_REPORTS_TOKEN.

Defina-o uma vez, fora do git:

bash
wrangler secret put FEEDBACK_REPORTS_TOKEN

Para desenvolvimento local, coloque o mesmo nome em .dev.vars. Não comite o valor.

Envie-o em cada solicitação:

http
GET /api/feedback-reports?since=2026-10-15T00:00:00.000Z HTTP/1.1
Host: tradecatalog.app
Authorization: Bearer <FEEDBACK_REPORTS_TOKEN>
bash
curl "https://tradecatalog.app/api/feedback-reports?since=2026-10-15T00:00:00.000Z" \
  -H "Authorization: Bearer $FEEDBACK_REPORTS_TOKEN"

Se o segredo estiver ausente, ou o cabeçalho estiver ausente ou incorreto, a resposta será 401 com WWW-Authenticate: Bearer realm="feedback-reports". Não há cookie, nenhuma chave de API de workspace e nenhuma CORS.

GET/api/feedback-reports

Listar relatos abertosLink para esta seção#

since é necessário. É uma data no formato ISO-8601 ou um tempo Unix em milissegundos. A lista é relatos abertos criados após esse tempo, do mais antigo para o mais recente, até 100.

NomeTipoObrigatórioDescrição
sincestringsimLimite inferior exclusivo em createdAt.
afterstringnãoID do relato. Com since, também retorna relatos que compartilham esse tempo exato e ordena após esse ID. Use ambos quando hasMore for verdadeiro.

Um relato que foi fechado não está nessa lista, mesmo que tenha sido criado após since.

json
{
  "reports": [
    {
      "id": "…",
      "kind": "bug",
      "status": "open",
      "message": "The price shows as zero.",
      "pageUrl": "https://tradecatalog.app/s/northgate/products",
      "tenantSlug": "northgate",
      "userId": "…",
      "role": "Owner",
      "email": "owner@example.com",
      "userAgent": "…",
      "viewport": "1440x900",
      "createdAt": "2026-10-15T12:00:00.000Z",
      "hasScreenshot": true,
      "screenshotUrl": "https://tradecatalog.app/api/feedback-reports/…/screenshot",
      "autoReplyText": null,
      "autoReplySentAt": null,
      "resolvedReplyText": null,
      "resolvedReplySentAt": null,
      "adminUrl": "https://tradecatalog.app/admin?section=reports&report=…"
    }
  ],
  "hasMore": false
}

Armazene o createdAt e id do último relato que você salvou. A próxima verificação usa esse tempo como since. Se a página estiver cheia (hasMore for verdadeiro), também passe esse ID como after e mantenha o mesmo since, para que um relato salvo no mesmo milissegundo não seja pulado.

Captura de telaLink para esta seção#

GET/api/feedback-reports/{id}/screenshot

O mesmo token de portador. A resposta é a imagem, ou 404 quando esse relato não tem captura de tela. O ID é o ID do relato da lista. Não é uma chave de objeto.

Os administradores da plataforma também podem abrir a captura de tela enquanto estão conectados em /admin/feedback-reports/{id} e resolver um relatório em Suporte → Relatórios.

Resposta automáticaLink para esta seção#

Salvar um relatório envia uma nota curta para a pessoa conectada no seu endereço próprio. Resolver o relatório envia novamente, para informar que foi corrigido e está ativo. Cada um desses é enviado no máximo uma vez por relatório.

autoReplyText e autoReplySentAt são essa primeira nota. resolvedReplyText e resolvedReplySentAt são a nota resolvida. Eles permanecem nulos até que o e-mail tenha sido enviado.

Defina a variável Worker FEEDBACK_AUTO_REPLY como off para parar ambos. AUTO_REPLY_BCC é um segredo: o endereço copiado nos e-mails. Deixe-o não definido e nada será copiado. A redação é feita com o AI do Worker. Se esse rascunho falhar em uma verificação, um aviso fixo será enviado em vez disso.

Cada relatório também se torna um ticket numerado. Resolver esse ticket envia o mesmo e-mail fixo e ativo uma vez. E-mails para support@ ou info@tradecatalog.app são encaminhados para SUPPORT_FORWARD_TO antes de serem lidos, depois arquivados da mesma forma. Se esse endereço estiver ausente, ou o encaminhamento falhar, a mensagem será rejeitada para que o remetente possa tentar novamente. Ela é anexada a uma conta existente somente quando Authentication-Results mostra um passo DMARC, ou ambos DKIM e SPF quando o DMARC estiver ausente. Caso contrário, o ticket permanece sem ligação e nenhuma confirmação é enviada.