Skip to content

Comentários ​

Os comentários são as avaliações que os compradores deixam nos produtos da loja, com nota de 1 a 5 e texto livre. Eles suportam respostas (comentários filhos), formando threads de discussão em cada produto. O comprador gerencia os próprios comentários, enquanto o lojista acompanha e modera tudo pelo painel administrativo.

Todas as requisições devem incluir o header X-Shop-Id (UUID) e, por serem protegidas, o header Authorization: Bearer {token}.


Endpoints do Comprador ​

Endpoints para o comprador criar, editar e acompanhar avaliações de produtos.

Listar Comentários ​

Retorna uma lista paginada dos comentários da loja, com as respostas aninhadas em cada avaliação.

http
GET /v1/shop/customer/product-comments

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoNúmero da página (mín. 1).
perPagenumberNãoItens por página (máx. 100).
shopProductIdnumberNãoFiltra por produto.
orderByenumNãoid, rate ou createdAt.
orderDirectionenumNãoasc ou desc.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/shop/customer/product-comments?page=1&perPage=25" \
  -H "Authorization: Bearer {token}" \
  -H "X-Shop-Id: 00000000-0000-4000-8000-000000000000" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna um objeto de paginação contendo os comentários, com respostas em children.

json
{
  "meta": {
    "currentPage": 1,
    "perPage": 25
  },
  "data": [
    {
      "id": "1",
      "parentId": null,
      "shopCustomerId": "2",
      "rate": 3,
      "comment": "Produto de boa qualidade, recomendo.",
      "createdAt": "2026-07-01T21:53:09.428+00:00",
      "updatedAt": "2026-07-01T21:53:09.428+00:00",
      "shopCustomer": {
        "id": "2",
        "firstName": "Maria",
        "lastName": "Silva"
      },
      "children": [
        {
          "id": "2",
          "parentId": "1",
          "shopCustomerId": "2",
          "rate": 4,
          "comment": "Concordo, a entrega também foi rápida.",
          "shopCustomer": {
            "id": "2",
            "firstName": "Maria",
            "lastName": "Silva"
          }
        }
      ]
    }
  ]
}

Criar Comentário ​

Publica uma nova avaliação em um produto. Para responder a um comentário existente, informe o parentId.

http
POST /v1/shop/customer/product-comments

Payload (Body) ​

AtributoTipoObrigatórioDescrição
shopProductIdnumberSimID do produto avaliado.
ratenumberSimNota inteira de 1 a 5.
commentstringSimTexto da avaliação (máx. 1000 caracteres).
parentIdnumberNãoID do comentário pai, para respostas (deve ser do mesmo produto). Pode ser null.

Exemplo de Requisição ​

bash
curl -X POST "https://api.us.basis.tavares.in/v1/shop/customer/product-comments" \
  -H "Authorization: Bearer {token}" \
  -H "X-Shop-Id: 00000000-0000-4000-8000-000000000000" \
  -H "Content-Type: application/json" \
  -d '{
    "shopProductId": 2,
    "rate": 5,
    "comment": "Produto de boa qualidade, recomendo.",
    "parentId": null
  }'

Respostas ​

201 Created

Retorna o ID do comentário criado.

json
{
  "id": "1"
}

422 Unprocessable Entity

Erro de validação nos campos enviados.

json
{
  "errors": [
    {
      "message": "Avaliação deve estar entre 1 e 5",
      "rule": "range",
      "field": "rate"
    }
  ]
}

Obter Comentário ​

Recupera os detalhes de um comentário, incluindo o comentário pai e as respostas.

http
GET /v1/shop/customer/product-comments/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimID do comentário.

Respostas ​

200 OK

Retorna os dados do comentário, com parent e children.

json
{
  "id": "2",
  "parentId": "1",
  "shopCustomerId": "2",
  "rate": 4,
  "comment": "Concordo, a entrega também foi rápida.",
  "createdAt": "2026-07-01T21:53:55.569+00:00",
  "updatedAt": "2026-07-01T21:53:55.569+00:00",
  "shopCustomer": {
    "id": "2",
    "firstName": "Maria",
    "lastName": "Silva"
  },
  "children": [],
  "parent": {
    "id": "1",
    "shopCustomerId": "2",
    "rate": 3,
    "comment": "Produto de boa qualidade, recomendo.",
    "shopCustomer": {
      "id": "2",
      "firstName": "Maria",
      "lastName": "Silva"
    }
  }
}

404 Not Found

Ocorre quando o comentário não existe na loja.

Atualizar Comentário ​

Atualiza a nota e o texto de um comentário do comprador autenticado.

http
PUT /v1/shop/customer/product-comments/:id

Payload (Body) ​

AtributoTipoObrigatórioDescrição
ratenumberSimNota inteira de 1 a 5.
commentstringSimTexto da avaliação (máx. 1000 caracteres).

Exemplo de Requisição ​

bash
curl -X PUT "https://api.us.basis.tavares.in/v1/shop/customer/product-comments/2" \
  -H "Authorization: Bearer {token}" \
  -H "X-Shop-Id: 00000000-0000-4000-8000-000000000000" \
  -H "Content-Type: application/json" \
  -d '{
    "rate": 4,
    "comment": "Depois de mais um tempo de uso, continuo satisfeita."
  }'

Respostas ​

204 No Content

Comentário atualizado com sucesso.

Remover Comentário ​

Exclui um comentário do comprador autenticado.

http
DELETE /v1/shop/customer/product-comments/:id

Respostas ​

204 No Content

Remoção concluída com sucesso.


Endpoints Administrativos ​

Endpoints protegidos para o lojista acompanhar e moderar as avaliações dos produtos.

Listar Comentários ​

Retorna uma lista paginada de todos os comentários da loja, com filtros por cliente e produto.

http
GET /v1/shop/user/product-comments

Parâmetros de Query ​

NomeTipoObrigatórioDescrição
pagenumberNãoNúmero da página (mín. 1).
perPagenumberNãoItens por página (máx. 100).
searchstringNãoBusca por termo no comentário (máx. 150 caracteres).
shopCustomerIdnumberNãoFiltra por cliente.
shopProductIdnumberNãoFiltra por produto.
orderByenumNãoid, rate ou createdAt.
orderDirectionenumNãoasc ou desc.

Exemplo de Requisição ​

bash
curl -X GET "https://api.us.basis.tavares.in/v1/shop/user/product-comments?shopProductId=2" \
  -H "Authorization: Bearer {token}" \
  -H "X-Shop-Id: 00000000-0000-4000-8000-000000000000" \
  -H "Accept: application/json"

Respostas ​

200 OK

Retorna um objeto de paginação contendo os comentários, com respostas em children.

json
{
  "meta": {
    "currentPage": 1,
    "perPage": 25
  },
  "data": [
    {
      "id": "1",
      "parentId": null,
      "shopCustomerId": "2",
      "rate": 3,
      "comment": "Produto de boa qualidade, recomendo.",
      "createdAt": "2026-07-01T21:53:09.428+00:00",
      "updatedAt": "2026-07-01T21:53:09.428+00:00",
      "shopCustomer": {
        "id": "2",
        "firstName": "Maria",
        "lastName": "Silva"
      },
      "children": [
        {
          "id": "2",
          "parentId": "1",
          "shopCustomerId": "2",
          "rate": 4,
          "comment": "Concordo, a entrega também foi rápida.",
          "shopCustomer": {
            "id": "2",
            "firstName": "Maria",
            "lastName": "Silva"
          }
        }
      ]
    }
  ]
}

Obter Comentário ​

Recupera os detalhes de um comentário, incluindo o comentário pai e as respostas.

http
GET /v1/shop/user/product-comments/:id

Parâmetros de Rota ​

NomeTipoObrigatórioDescrição
idnumberSimID do comentário.

Respostas ​

200 OK

Retorna os dados do comentário, com parent e children.

404 Not Found

Ocorre quando o comentário não existe na loja.

Remover Comentário ​

Exclui um comentário da loja (moderação).

http
DELETE /v1/shop/user/product-comments/:id

Respostas ​

204 No Content

Remoção concluída com sucesso.