PUBLIC.Diferenças do V2:visibility (PUBLIC/PRIVATE)PUBLISHED indica que a avaliação foi processada e está elegível para publicaçãovisibility: PRIVATE são visíveis apenas para o parceiro, não aparecem publicamente e não afetam estatísticas públicas, ainda assim o seu status será PUBLISHED.reply) para uma lista (replies), visando um diálogo mais rico entre cliente e parceiro no futuro, embora atualmente o suporte seja limitado a uma resposta do parceiro.Principais mudanças:replies com um item)from: MERCHANT ou CUSTOMER)NOT_REPLIED. Após a publicação, não é possível registrar respostas.status: DISCARDED substitui a flag discarded: true do V1. O status INVALID não tem correspondência direta no V1, ele é um estado interno do processo de auto moderação, mas para efeitos práticos a avaliação pode ser considerada como descartada.CREATED: avaliação registrada e em processamento inicial.NOT_REPLIED: avaliação com comentário, ainda sem resposta do parceiro.REPLIED: avaliação com pelo menos uma resposta do parceiro.PUBLISHED: avaliação publicada (elegível para visibilidade pública conforme regras).INVALID: avaliação inválida por violação de diretrizes.DISCARDED: avaliação descartada (ex.: fraude, política).UNKNOWN: usado em casos raros/indeterminados.NOT_REPLIED até que o parceiro responda.CREATED → NOT_REPLIED ou PUBLISHED.NOT_REPLIED → REPLIED (ao registrar a resposta).NOT_REPLIED e REPLIED até a publicação; depois, PUBLISHED, conforme regras de elegibilidade.discarded, moderated, moderationStatus, reply, publishedAdicionados (V2): status, replies, version, visibility{
  "page": 0,
  "size": 0,
  "reviews": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "score": 3.0,
      "status": "PUBLISHED",
      "comment": "Me iludi com a propaganda de açaí na quentinha",
      "replies": [
        {
          "createdAt": "2025-03-11T12:50:50.668Z",
          "text": "Oi, Lucca! Sentimos que sua experiência não foi a ideal. Vamos melhorar!",
          "from": "MERCHANT"
        }
      ],
      "order": {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "shortId": "1234",
        "createdAt": "2025-03-11T12:05:26.916Z"
      },
      "surveyId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "version": "v2",
      "visibility": "PUBLIC"
    }
  ]
}| Funcionalidade | Endpoint | Cenário | Descrição | Resultado esperado | 
|---|---|---|---|---|
| Estrutura V2 | GET /v2/merchants/{id}/reviews | Contrato V2 completo | Validar novos campos: status, replies[], version, visibility | Campos V2 presentes | 
| Paginação com contagem | GET /v2/merchants/{id}/reviews?addCount=true | Contagem total | Validar campos total e pageCount quando solicitados | total e pageCount populados | 
| Campo visibility | GET /v2/merchants/{id}/reviews | Reviews públicas/privadas | Validar visibility: "PUBLIC" ou "PRIVATE" | visibility correta | 
| Status CREATED | GET /v2/merchants/{id}/reviews | Review recém-criada | Validar status para avaliação em processamento inicial | status: "CREATED" | 
| Status NOT_REPLIED | GET /v2/merchants/{id}/reviews | Review aguardando resposta | Validar status para review com comentário sem resposta | status: "NOT_REPLIED" | 
| Status REPLIED | GET /v2/merchants/{id}/reviews | Review com resposta | Validar status após parceiro responder | status: "REPLIED" | 
| Status PUBLISHED | GET /v2/merchants/{id}/reviews | Review publicada | Validar status final após processamento | status: "PUBLISHED" | 
| Filtros de data | GET /v2/merchants/{id}/reviews?dateFrom=2024-01-01&dateTo=2024-01-31 | Período válido | Validar filtros temporais funcionando corretamente | 200 OK com reviews filtradas | 
| Estrutura replies | GET /v2/merchants/{id}/reviews/{id} | Review com resposta | Validar array replies[] com from: "MERCHANT"/"CUSTOMER" | replies[0].from: "MERCHANT" | 
| Merchant sem reviews | GET /v2/merchants/{merchantWithoutReviews}/reviews | Cenário vazio | Validar comportamento quando merchant não tem reviews | reviews: [], total: 0 | 
| Resposta apenas NOT_REPLIED | POST /merchants/{id}/reviews/{reviewId}/answers | Tentar responder PUBLISHED | Validar que só aceita resposta em NOT_REPLIED | 422 UNPROCESSABLE ENTITY | 
| Validação texto resposta | POST /merchants/{id}/reviews/{reviewId}/answers | Texto 10-300 caracteres | Validar limites mantidos do V1 | 201 CREATED ou 422 | 
| Listagem V2 | GET /v2/merchants/{id}/reviews?page=1&pageSize=10 | Happy path | Validar funcionamento básico da listagem | 200 OK com ReviewListV2 | 
| Detalhes V2 | GET /v2/merchants/{id}/reviews/{reviewId} | Review existente | Validar detalhes com campos V2 completos | 200 OK com ReviewV2 | 
| Review inexistente | GET /v2/merchants/{id}/reviews/invalid-id | ID não encontrado | Validar tratamento de erro | 404 NOT FOUND | 
| Page size limite | GET /v2/merchants/{id}/reviews?pageSize=51 | Limite máximo | Validar proteção de performance | 400 BAD REQUEST | 
reply virou replies?visibility?PUBLIC: visível publicamente e considerada em nota.PRIVATE: não visível publicamente e fora das estatísticas públicas.status foi adicionado?CREATED: avaliação registrada e em processamento inicial.NOT_REPLIED: avaliação com comentário, ainda sem resposta do parceiro.REPLIED: avaliação com pelo menos uma resposta do parceiro.PUBLISHED: avaliação publicada (elegível para visibilidade pública conforme regras).INVALID: avaliação inválida por violação de diretrizes.DISCARDED: avaliação descartada (ex.: fraude, política).UNKNOWN: usado em casos raros/indeterminados.version identifica o motor que criou a avaliação (v1 ou v2).status, replies[], version e visibilityaddCount=true (campos total e pageCount populados)visibility com valores "PUBLIC" ou "PRIVATE" corretamente atribuídosCREATED (processamento inicial), NOT_REPLIED (aguardando resposta), REPLIED (com resposta do parceiro), PUBLISHED (publicada)dateFrom=2024-01-01&dateTo=2024-01-31)reviews: [], total: 0)replies[] com campo from identificando origem ("MERCHANT" ou "CUSTOMER")NOT_REPLIED (tentativa de responder avaliação PUBLISHED deve retornar 422 UNPROCESSABLE ENTITY)