Registra um feedback explícito (👍 ou 👎) do visitante sobre um turno da conversa, com um motivo opcional quando é 👎. Um 👎 também abre (ou reutiliza, se já existir) um caso de moderação interno para que a equipe da Mapaprop revise a resposta.
Esta API não tem identidade por usuário (apenas um cliente OAuth com escopo na conta): o feedback fica registrado em nome da conta, não de uma pessoa específica.
| Informação do recurso | |
|---|
| Autenticação | Obrigatória (Token de API, Bearer) |
| Scope | mapaprop-chat-ai |
| HTTP Method | POST |
| Response | JSON |
| Version | 1 |
https://mapaprop.app/api/action/mapaprop-chat-ai-v1/feedback
| Key | Type | Required | Descrição |
|---|
| turnId | long | sim | ID do turno sobre o qual se dá o feedback. Vem na resposta de POST /chat (campo turnId) ou no evento SSE done de POST /chat/stream. Precisa pertencer à conta do token. |
| rating | string | sim | up ou down. |
| reasonCode | string | não | Motivo do feedback: incorrect, not_resolved, irrelevant ou other. |
| reasonText | string | não | Comentário livre do visitante (máximo de 2000 caracteres). |
POST /api/action/mapaprop-chat-ai-v1/feedback HTTP/1.1
Host: mapaprop.app
Content-Type: application/json
Authorization: Bearer {access_token}
{
"turnId": 481512,
"rating": "down",
"reasonCode": "incorrect",
"reasonText": "Me dijo que había 3 ambientes y en la foto se ve un monoambiente."
}
| Objeto | Campo | Tipo | Obrigatório | Descrição |
|---|
| Response | success | boolean | sim | true quando o feedback foi registrado corretamente. |
| turnId | long | sim | O turnId que você enviou. |
| rating | string | sim | O rating que você enviou (up ou down). |
| feedbackId | int | sim | ID do registro de feedback criado. |
| caseCreated | boolean | sim | true somente quando esta chamada criou um caso de moderação NOVO. Em up, sempre false. Em down, é false se o turno já tinha um caso aberto de um feedback anterior (o mesmo caso é reutilizado, nunca é duplicado). |
| moderationCaseId | int | não | ID do caso de moderação (novo ou existente). Só está presente quando rating é down. |
Em caso de erro, não chega o shape acima com success: false: a requisição é cortada com um erro (ver tabelas a seguir).
| Erro | Causa |
|---|
INVALID_PERMISSION (HTTP 403) | O turnId enviado não existe, ou pertence à conversa de outra conta. |
| Erro | Causa |
|---|
REQUIRED_INPUT — "El campo 'turnId' es requerido" | Falta o campo turnId, ou ele é menor ou igual a 0. |
REQUIRED_INPUT — "El campo 'rating' es requerido ('up' o 'down')" | Falta o campo rating, ou seu valor não é up nem down. |
REQUIRED_INPUT — "El campo 'reasonCode' debe ser uno de: incorrect, not_resolved, irrelevant, other" | Foi enviado reasonCode com um valor diferente dos permitidos. |
INPUT_TOO_LONG — "El campo 'reasonText' es demasiado largo (max 2000 caracteres)" | O reasonText enviado ultrapassa 2000 caracteres. |
{
"success": true,
"turnId": 481512,
"rating": "down",
"feedbackId": 9031,
"caseCreated": true,
"moderationCaseId": 214
}
Exemplo de erro:
{
"success": false,
"error": "INVALID_PERMISSION"
}