Mejoras
Lo que el revisor nocturno encontró en tu agente: descartar o marcar resuelto un hallazgo, y calificar una derivación.
Descarga la proyección completa de la API pública: openapi.json.
| Método | Ruta | Qué hace |
|---|---|---|
PATCH | /ai-agents/{id}/findings/{findingId} | Mark a finding addressed, dismissed (with a note) or reopen it |
POST | /conversations/{id}/handoff-feedback | The assigned human's answer to "could the agent have avoided this handoff?" |
PATCH /ai-agents/{id}/findings/{findingId}
Mark a finding addressed, dismissed (with a note) or reopen it
Sets status to addressed, dismissed or open. addressed and dismissed stamp who decided and when; dismissed also stores the optional note as dismiss_note. Reopening with open clears those stamps. Recorded in the audit log and refreshes the agent's Coach notices. Needs the corrections:write scope; 404 when the finding does not belong to the agent in this workspace. Answers the updated finding.
| Parámetro | En | Tipo | Obligatorio | Restricciones |
|---|---|---|---|---|
id | path | uuid | sí | |
findingId | path | uuid | sí |
Cuerpo
| Campo | Tipo | Obligatorio | Restricciones |
|---|---|---|---|
status | open \ | addressed \ | dismissed |
note | string | — | máx. 1000 |
curl -X PATCH https://api.vitrinadev.com/api/v1/ai-agents/<id>/findings/<id> \
-H "Authorization: Bearer $VITRINA_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "dismissed",
"note": "Es un caso aislado de una campaña ya terminada."
}'Ejemplo de respuesta (200)
{
"data": {
"id": "7b7b7b7b-0000-4000-8000-000000000011",
"tenant_id": "a1a1a1a1-0000-4000-8000-000000000001",
"ai_agent_id": "7b7b7b7b-0000-4000-8000-000000000001",
"kind": "missing_knowledge",
"topic_key": "horarios-de-atencion",
"title": "El agente no sabe los horarios de atención de la sucursal",
"description": "Varios clientes preguntaron por el horario de sábado sin obtener respuesta.",
"status": "dismissed",
"first_seen_at": "2026-09-20T15:00:00.000Z",
"last_seen_at": "2026-10-08T18:30:00.000Z",
"occurrence_count": 7,
"sample_conversation_ids": [
"bbbbbbbb-0000-4000-8000-000000000001",
"bbbbbbbb-0000-4000-8000-000000000002"
],
"investigation": null,
"investigated_at": null,
"investigation_error": null,
"addressed_at": null,
"addressed_by": null,
"dismissed_at": "2026-10-09T10:00:00.000Z",
"dismissed_by": "11111111-0000-4000-8000-000000000001",
"dismiss_note": "Es un caso aislado de una campaña ya terminada.",
"created_at": "2026-09-20T15:00:00.000Z",
"updated_at": "2026-10-09T10:00:00.000Z"
}
}Responde: 200 · 400 · 401 · 403 · 404 · 409 · 429
POST /conversations/{id}/handoff-feedback
The assigned human's answer to "could the agent have avoided this handoff?"
skipped only records that the card was dismissed; any other verdict queues a review that reads the note as first-hand evidence.
| Parámetro | En | Tipo | Obligatorio | Restricciones |
|---|---|---|---|---|
id | path | string | sí | mín. 1 |
Cuerpo
| Campo | Tipo | Obligatorio | Restricciones |
|---|---|---|---|
verdict | missing_knowledge \ | missing_capability \ | wrong_behavior \ |
note | string | null | — | máx. 1000 |
curl -X POST https://api.vitrinadev.com/api/v1/conversations/<id>/handoff-feedback \
-H "Authorization: Bearer $VITRINA_KEY" \
-H "Content-Type: application/json" \
-d '{
"verdict": "missing_knowledge",
"note": "Preguntó por el horario de sábado y el agente no tenía el dato."
}'Ejemplo de respuesta (201)
{
"data": {
"feedback": {
"verdict": "missing_knowledge",
"note": "Preguntó por el horario de sábado y el agente no tenía el dato.",
"user_id": "11111111-0000-4000-8000-000000000001",
"at": "2026-10-09T10:00:00.000Z"
},
"review_status": "pending"
}
}Responde: 201 · 400 · 401 · 403 · 404 · 409 · 429
Biblioteca
Fotos, videos, PDFs y audios que el equipo y el agente envían, con «cuándo usarlo», temas y consentimiento para fotos de pacientes.
Equipo
Los miembros del workspace y sus invitaciones: alta, cambio de rol o sucursal, y baja — que siempre reparte el trabajo pendiente de la persona en lugar de dejarlo huérfano.