# Webhooks y estado de entregas

Suscríbete a eventos actuales, verifica notificaciones y supervisa las entregas.

## Operaciones REST y permisos de las claves

| Tarea | Permisos de la clave | Empieza aquí |
| --- | --- | --- |
| Registrar webhooks y supervisar las entregas | `write:webhooks`, `read:webhooks` | `POST /api/v1/landlord/webhooks` |

## Suscríbete a los eventos actuales

Registra únicamente eventos del catálogo actual: `application.submitted`, `application.intake_finalized`, `listing.changed`, `listing.unpublished`, `portfolio_import.completed`, `property.created`, `screening.started`, `unit.created`, `rent_roll_import.completed`, `fault_report.created`, `work_order.updated`, `commercial_inspection.created`, `commercial_inspection.updated`, `commercial_inspection.submitted`, `commercial_inspection.reviewed`.

## Verifica y confirma las notificaciones

Guarda el secreto de firma al crear el webhook. `X-Homito-Signature` tiene el formato `sha256=<64 lowercase hexadecimal digits>`, con 64 dígitos hexadecimales en minúscula. Verifica HMAC-SHA256 sobre los **bytes del cuerpo sin procesar de la solicitud**, usando ese secreto y una comparación de tiempo constante. Guarda de forma duradera y elimina duplicados de `X-Homito-Event-Id` antes de devolver 2xx. `X-Homito-Delivery` identifica una entrega; no es la clave de deduplicación del evento. La entrega se realiza al menos una vez; puede haber duplicados y un orden de llegada diferente. Una notificación no demuestra que se haya completado una operación de dominio posterior ni una decisión de arrendamiento.

## Consulta por separado el estado de las entregas

Consulta el estado de las entregas en `GET /api/v1/landlord/webhooks/{webhookId}/deliveries` con `read:webhooks`. Utiliza el recibo o progreso de la solicitud y las consultas de solicitudes autorizadas para comprobar sus estados independientes.

## Conserva las capacidades de la solicitud

El envío versionado de solicitudes tiene un contrato diferente: conserva su UUID `X-Application-Submission-Key`, así como las claves de recibo y carga. Sigue las operaciones publicadas de recibo y progreso antes de repetir. El `Idempotency-Key` del arrendador no sustituye esas capacidades.

## Mantén los datos privados fuera de las cachés públicas

Mantén los datos personales, los recibos y las capacidades de carga fuera de las cachés públicas de anuncios. Las consultas de inquilinos y solicitudes devuelven deliberadamente proyecciones operativas mínimas; no deduzcas campos privados ausentes ni conclusiones de evaluación. Distingue los valores null o desconocidos de cero o de un resultado completado.
