Registra un feedback explícito (👍 o 👎) del visitante sobre un turno de la conversación, con un motivo opcional cuando es 👎. Un 👎 además abre (o reutiliza, si ya existe) un caso de moderación interno para que el equipo de Mapaprop revise la respuesta.
Esta API no tiene identidad por usuario (solo un cliente OAuth scopeado a la cuenta): el feedback queda registrado a nombre de la cuenta, no de una persona en particular.
| Información del recurso | |
|---|
| Autenticación | Requerida (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 | Descripción |
|---|
| turnId | long | sí | ID del turno sobre el que se da feedback. Viene en la respuesta de POST /chat (campo turnId) o en el evento SSE done de POST /chat/stream. Debe pertenecer a la cuenta del token. |
| rating | string | sí | up o down. |
| reasonCode | string | no | Motivo del feedback: incorrect, not_resolved, irrelevant o other. |
| reasonText | string | no | Comentario libre del visitante (máximo 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 | Requerido | Descripción |
|---|
| Response | success | boolean | sí | true cuando el feedback se registró correctamente. |
| turnId | long | sí | El turnId que enviaste. |
| rating | string | sí | El rating que enviaste (up o down). |
| feedbackId | int | sí | ID del registro de feedback creado. |
| caseCreated | boolean | sí | true solo cuando esta llamada creó un caso de moderación NUEVO. En up, siempre false. En down, es false si el turno ya tenía un caso abierto de un feedback anterior (se reutiliza el mismo caso, nunca se duplica). |
| moderationCaseId | int | no | ID del caso de moderación (nuevo o existente). Solo está presente cuando rating es down. |
En caso de error, no llega el shape de arriba con success: false: la request se corta con un error (ver tablas siguientes).
| Error | Causa |
|---|
INVALID_PERMISSION (HTTP 403) | El turnId enviado no existe, o pertenece a la conversación de otra cuenta. |
| Error | Causa |
|---|
REQUIRED_INPUT — "El campo 'turnId' es requerido" | Falta el campo turnId, o es menor o igual a 0. |
REQUIRED_INPUT — "El campo 'rating' es requerido ('up' o 'down')" | Falta el campo rating, o su valor no es up ni down. |
REQUIRED_INPUT — "El campo 'reasonCode' debe ser uno de: incorrect, not_resolved, irrelevant, other" | Se envió reasonCode con un valor distinto a los permitidos. |
INPUT_TOO_LONG — "El campo 'reasonText' es demasiado largo (max 2000 caracteres)" | El reasonText enviado supera los 2000 caracteres. |
{
"success": true,
"turnId": 481512,
"rating": "down",
"feedbackId": 9031,
"caseCreated": true,
"moderationCaseId": 214
}
Ejemplo de error:
{
"success": false,
"error": "INVALID_PERMISSION"
}