
# Enviar un evento de prueba a un endpoint de webhook

`POST /v1/webhook-endpoints/{endpoint_id}:test` · permiso `webhook-endpoints:write` · todos los planes

Envía un evento sintético firmado del tipo elegido (por defecto `user.created`) al endpoint y devuelve el resultado. El evento contiene `data.test = true` y se firma con el secreto actual del endpoint, igual que una entrega real, para que pueda comprobar la verificación de la firma. No se escribe ningún registro de entrega y no se devuelve el cuerpo de la respuesta del receptor. Cada endpoint permite 10 pruebas por minuto.

## Solicitud

| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `endpoint_id` | path | sí | Identificador del endpoint de webhook (`whe_…`). |
| `event_type` | string | no | Tipo del catálogo de eventos a enviar; por defecto `user.created`. El cuerpo es opcional. |
| `Idempotency-Key` | header | no | Reproduce el resultado de una solicitud repetida con la misma clave. |

```json
{
  "event_type": "user.updated"
}
```

## Respuesta

`200 OK` con el resultado. Una entrega fallida sigue devolviendo `200`: `succeeded` es `false` y `error_class` indica el motivo (`timeout`, `tls`, `dns`, `egress_blocked`, `http_status`, `connection`).

```json
{
  "succeeded": true,
  "http_status": 204,
  "error_class": null,
  "latency_ms": 87,
  "event_id": "evt_01k8a3m7s9v1w3x5y7z9b2c4d6"
}
```

## Errores

| HTTP | código | Cuándo |
|---|---|---|
| 400 | `unknown_field` | El cuerpo tiene un campo que no aparece en la lista anterior. |
| 404 | `not_found` | No existe tal endpoint en este entorno. |
| 409 | `conflict` | El endpoint no está `enabled`. |
| 422 | `validation_failed` | `/event_type unknown_event_type`: no es un tipo del catálogo. |
| 429 | `rate_limited` | Más de 10 pruebas por minuto para este endpoint; reintente después de `Retry-After`. |
| 401 | `unauthenticated` | Falta la credencial, no es válida o fue revocada. |
| 403 | `insufficient_permissions` | La credencial no tiene el permiso `webhook-endpoints:write`. |
| 503 | `service_unavailable` | La administración de webhooks no está disponible temporalmente; reintente después del periodo `Retry-After`. |

## Ejemplo

```bash
curl -X POST https://api.eu.keenauth.com/v1/webhook-endpoints/whe_01k8a3m5q7t9v1w3x5y7z9b2c4:test \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"event_type":"user.updated"}'
```

CLI: `keenauth webhook-endpoints test whe_01k8a3m5q7t9v1w3x5y7z9b2c4 --event-type user.updated`
