---
title: "Confirmar Cita"
method: POST
path: "/api/citas/confirmar-cita"
tags: ["copilot_frontend", "citas"]
---

# Confirmar Cita

`POST /api/citas/confirmar-cita`

Confirma una cita: actualiza datos del contacto en HubSpot (campos modificados + propiedades adicionales)
y crea un deal asociado.

**Flujo:**
1. Busca el contacto por email en HubSpot
2. Compara datos originales vs modificados y actualiza solo los campos que cambiaron
3. Obtiene el owner_id del comercial por email
4. Normaliza el formato de hora (elimina cero inicial: "09:30" → "9:30")
5. Actualiza propiedades adicionales del contacto:
   - estado: "Con visita"
   - cita_app: "Copilot"
   - comercial: nombre del comercial
   - hubspot_owner_id: ID del comercial
   - fecha_visita: fecha de la visita
   - teleoperadora: nombre de la teleoperadora (opcional)
6. Crea el deal con los datos de la cita (hora normalizada)
7. Asocia el deal al contacto (automático en create_deal)

**🔒 Endpoint Protegido:** Requiere autenticación JWT y rol 'ui_comercial', 'ui_citas' o 'admin'

## Request body

- ConfirmarCitaRequest — Request para confirmar una cita y crear deal en HubSpot
  - `datos_originales` DatosClienteCita, required — Datos del cliente para crear/actualizar en HubSpot
    - `email` string, required
    - `firstname` string, nullable
    - `lastname` string, nullable
    - `phone` string, nullable
    - `address` string, nullable
    - `city` string, nullable
    - `zip` string, nullable
    - `state` string, nullable
  - `datos_modificados` DatosClienteCita, required — Datos del cliente para crear/actualizar en HubSpot
    - `email` string, required
    - `firstname` string, nullable
    - `lastname` string, nullable
    - `phone` string, nullable
    - `address` string, nullable
    - `city` string, nullable
    - `zip` string, nullable
    - `state` string, nullable
  - `modalidad` string, required
  - `fecha_visita` string, required
  - `hora_visita` string, required
  - `comercial_email` string, required
  - `comercial_nombre` string, required
  - `teleoperadora` string, nullable
  - `provincia_negocio` string, nullable

## Response `200`

Successful Response

- ConfirmarCitaResponse — Response al confirmar una cita
  - `success` boolean, required
  - `message` string, required
  - `contact_id` string, nullable
  - `deal_id` string, nullable
  - `event_id` string, nullable
  - `campos_actualizados` string[]

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/hogarsolar/apis/hogarsolar-backend-api.md) · [All operations](https://skmtc.dev/hogarsolar/apis/hogarsolar-backend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hogarsolar/apis/hogarsolar-backend-api/revisions/d9861e46bef8?raw)
