VitrinaAPI

Sugerencias del panel de inicio

Hasta tres tarjetas con la cifra de la propia clínica que justifica abrir un módulo (pagos sin boleta, comisiones sin liquidar, pagos sin conciliar, presupuestos aceptados sin cita, gasto en publicidad), y cómo cerrar una para quien la ve.

Beta
Puede cambiar en cualquier momento, con una entrada en el changelog y aviso a quienes la llamaron recientemente — ver versionado.

Descarga la proyección completa de la API pública: openapi.json.

Presupuestar un plan y cerrar caja explica este recurso en prosa, con ejemplos ejecutables.

MétodoRutaQué hace
GET/clinic/evidence-cardsEvidence cards for the owner's home (at most three)
POST/clinic/evidence-cards/{rule_id}/dismissDismiss one evidence card for the calling member

GET /clinic/evidence-cards

Evidence cards for the owner's home (at most three)

Deterministic, no model call. Each card carries rule, the proving number (\{ value, unit: "clp" | "count" \}), human-ready Spanish title / label / detail / cta_label, a workspace-relative route, and money_at_stake_clp. Ordered by money at stake, biggest first. A rule whose module is already set up, whose number is zero, or that the caller dismissed (and whose number has not grown in 30 days) is absent: an empty array means render nothing. The numbers are the destination modules' own (boletas, comisiones, conciliación, números comerciales, gastos).

Connected apps: every patient and contact in the response is a Seudónimo de paciente — initials plus a stable number, "M.F. · #1001" — unless the clinic allowed patient names, with RUT, phone and email masked in free text and meta.patient_privacy saying so. Clinical alerts (flags) are withheld in both modes, and a non-JSON body (an export, a file) is refused with 403 CONNECTED_APP_SENSITIVE_DATA.

curl https://api.vitrinadev.com/api/v1/clinic/evidence-cards \
  -H "Authorization: Bearer $VITRINA_KEY"

Ejemplo de respuesta (200)

{
  "data": {
    "cards": [
      {
        "rule": "payments_without_boleta",
        "number": {
          "value": 1450000,
          "unit": "clp"
        },
        "label": "en pagos sin boleta este mes",
        "title": "Este mes registraste $1.450.000 en pagos sin boleta",
        "detail": "12 pagos sin documento tributario. Conecta la emisión electrónica y emite cada boleta desde el mismo pago.",
        "cta_label": "Activar boletas",
        "route": "/clinic/boletas?tab=emision",
        "money_at_stake_clp": 1450000
      }
    ]
  }
}

Responde: 200 · 400 · 401 · 403 · 404 · 409 · 429

POST /clinic/evidence-cards/{rule_id}/dismiss

Dismiss one evidence card for the calling member

Stored as a per-member preference (no table). The card returns only after 30 days AND only if its number grew since; the number is read server-side at dismissal time, never taken from the caller.

Connected apps: every patient and contact in the response is a Seudónimo de paciente — initials plus a stable number, "M.F. · #1001" — unless the clinic allowed patient names, with RUT, phone and email masked in free text and meta.patient_privacy saying so. Clinical alerts (flags) are withheld in both modes, and a non-JSON body (an export, a file) is refused with 403 CONNECTED_APP_SENSITIVE_DATA.

ParámetroEnTipoObligatorioRestricciones
rule_idpathpayments_without_boleta \commissions_unsettled \payments_unreconciled \
curl -X POST https://api.vitrinadev.com/api/v1/clinic/evidence-cards/<id>/dismiss \
  -H "Authorization: Bearer $VITRINA_KEY"

Ejemplo de respuesta (200)

{
  "data": {
    "rule": "payments_without_boleta",
    "dismissed_at": "2026-09-30T15:00:00.000Z",
    "value": 1450000
  }
}

Responde: 200 · 400 · 401 · 403 · 404 · 409 · 429

En esta página