Webhooks
Autoinspector notifica vía webhooks a tu sistema que es lo que está pasando con una inspección. De esta manera, tu sistema puede recibir información en tiempo real del estado de una inspección, el procesamiento de una imagen, etc.
Crear webhook
Sigue los mismos pasos del flujo estándar de creación de webhooks.
Accede al panel de Administración de webhooks.
Haz click en el botón de crear webhook.
Ingresa el endpoint de tu sistema backend. Asegúrate de que sea accesible desde internet.
En la sección de eventos, suscríbete al evento inspection_completed.
Haz click sobre Crear Endpoint.
Webhook Tip
El endpoint de tu servidor tiene que ser accessible desde internet. Es por ello que si deseas testear los eventos que Autoinspector envía en tu host, puedes usar una herramienta llamada ngrok para crear un túnel desde internet a tu host.
Eventos
Un evento representa una acción o hecho que acontece dentro del flujo de una inspección. Los eventos que se encuentran disponibles son:
{ "event": "inspection_created", "payload": { "_id": "651ae032ff786d198dfa4ce4", "status": "created", "producer": { "userId": "61478404b9a70800551878b6", "membershipId": "61c28b777b0c420012bd4a68", "companyId": "6147843bb9a70800551878bd", "firstName": "John", "lastName": "Doe", "username": "johndoe", "email": "johndoe@gmail.com" }, "type": "car", "metadata": { "my_custom_key": "my_custom_value" }, "testing": false, "template": { "name": "easy", "type": "built-in", "_id": "62be865212ca0918bcabf2a5" }, "magicLink": "https://app.autoinspector.ai/inspection/651ae032ff786d198dfa4ce4?accessCode=5087" }}Seguridad
Par una comunicación mas segura, se recomienda seguir el flujo de HMAC (hash message authorization code).
Cada vez que Autoinspector envía un evento, en la request estará el header autoinspector-signature que corresponde al HMAC generado mediante el uso de la signature del webhook. De esta manera, en tu aplicación tu puedes generar otro HMAC mediante el body de la request y la private signature del webhook para comparar el HMAC generado por ti con el que se encuentra en la request.
Si los dos HMAC coinciden, quiere decir que quien esta realizando la request a tu sistema es efectivamente Autoinspector.
Un ejemplo de este método en código es el siguiente:
WEBHOOK SIGNATURE
El webhook signature lo puedes encontrar en el dashboard dentro del detail de tu webhook. Puedes generar nuevos tantas veces lo necesites.
import crypto from 'node:crypto'import express from 'express'const app = express()app.post( '/webhooks/autoinspector', express.raw({ type: 'application/json' }), (req, res) => { const signature = req.header('autoinspector-signature') const secret = process.env.AUTOINSPECTOR_WEBHOOK_SECRET if (!signature || !secret) return res.status(400).json({ error: 'Missing signature or secret' }) const rawBody = req.body const expectedSignature = crypto .createHmac('sha256', secret) .update(rawBody) .digest('hex') const isValid = signature.length === expectedSignature.length && crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(expectedSignature), ) if (!isValid) return res.status(400).json({ error: 'Invalid signature' }) const event = JSON.parse(rawBody.toString('utf8')) if (event.event === 'inspection_completed') { // Tu lógica de negocio } return res.status(200).json({ received: true }) },)Lógica de reintentos
En el ciclo de vida de una aplicación, el posible downtime forma parte de la misma. Es por ello, que hay eventos que son resilientes a cierta cantidad de fallos y siguen una lógica de reintentos.
Estos eventos son:
image_processedextra_image_processedinspection_completed
Si al primer intento de enviar la notificación, la integración no responde con un status 2XX, se reintentará enviar en los próximos 30 minutos con dos repeticiones.