Saltar a contenido

Probar webhook

POST /apientidades/v1/webhooks/test

Dispara un evento de prueba a todos los webhooks activos de la entidad que estén suscritos al evento indicado. Permite verificar que los endpoints receptores están accesibles y responden correctamente antes de pasar a producción.

Comportamiento

Este endpoint no prueba un webhook concreto por ID. Envía el evento a todos los webhooks activos suscritos al evento indicado. Si quiere probar solo uno, regístrelo con ese único evento antes de lanzar la prueba.

Body de la petición

{
  "evento": "evaluacion.abierta",
  "datosExtra": {
    "campo": "valor opcional"
  }
}
Campo Tipo Obligatorio Descripción
evento string Nombre del evento a simular. Debe ser uno de los 11 eventos válidos (ver GET /webhooks/eventos)
datosExtra object No Datos adicionales que se incluirán en el campo datos del payload enviado

Ejemplo de petición

curl -s -X POST \
  "https://apientidades-pro.transparenciacanarias.org/apientidades/v1/webhooks/test" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"evento": "evaluacion.abierta"}' | jq .
import requests

BASE_URL = "https://apientidades-pro.transparenciacanarias.org/apientidades/v1"
headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json"
}

response = requests.post(
    f"{BASE_URL}/webhooks/test",
    headers=headers,
    json={"evento": "evaluacion.abierta"}
)
print(response.json())
var payload = new { evento = "evaluacion.abierta" };
var content = new StringContent(
    JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");
var response = await client.PostAsync($"{baseUrl}/webhooks/test", content);
Console.WriteLine(await response.Content.ReadAsStringAsync());

Payload de prueba enviado a los webhooks

El sistema envía un POST a la URL de cada webhook suscrito al evento indicado:

POST https://mi-entidad.es/api/webhooks/tcanaria
Content-Type: application/json
X-Webhook-Event: evaluacion.abierta
X-Webhook-Signature: abc123...
{
  "evento": "evaluacion.abierta",
  "timestamp": "2026-03-25T14:30:00Z",
  "data": {
    "test": true,
    "entidadId": 1001,
    "entidadNombre": "AYUNTAMIENTO DE EJEMPLO",
    "mensaje": "Evento de prueba 'evaluacion.abierta' disparado desde la API de integracion.",
    "datos": {}
  }
}

El campo test: true permite que su receptor distinga los eventos de prueba de los reales.

Respuesta exitosa (200)

{
  "message": "Evento de prueba 'evaluacion.abierta' encolado para 2 webhook(s).",
  "webhooks": [
    { "id": 1, "url": "https://mi-entidad.es/api/webhooks/tcanaria" },
    { "id": 2, "url": "https://mi-entidad.es/api/webhooks/backup" }
  ]
}
Campo Tipo Descripción
message string Confirmación con el número de webhooks a los que se ha encolado el evento
webhooks array Lista de webhooks (id y url) que recibirán la notificación

Envío asíncrono

El evento se encola y se envía de forma asíncrona. La respuesta 200 confirma que el envío fue programado, no que el endpoint de su entidad lo recibió correctamente. Revise los logs de su servidor para confirmar la recepción.

Errores posibles

Código Descripción
400 Campo evento ausente o vacío
400 Evento no válido (no está en la lista de eventos disponibles)
401 Token ausente, expirado o inválido
404 No hay webhooks activos suscritos al evento indicado. Registre uno primero con POST /webhooks

Verificar antes de producción

Use este endpoint después de registrar un webhook para confirmar que su endpoint está accesible. Si no recibe la notificación, verifique:

  • Que la URL es accesible desde internet (no solo desde su red interna)
  • Que el certificado SSL es válido
  • Que el endpoint acepta peticiones POST con Content-Type: application/json
  • Que devuelve un código 2xx

Firma incluida

El payload de prueba incluye la firma HMAC-SHA256 en la cabecera X-Webhook-Signature si configuró un secreto al registrar el webhook. Aproveche la prueba para verificar su lógica de validación de firma.