Saltar al contenido principal

Integración por eventos (Webhooks)


Propósito

TRAK pone a su disposición un único punto de conexión al que puede enviar eventos para mantener sincronizados sus pacientes con la plataforma: dar de alta un paciente o desactivarlo.

Cada petición indica el tipo de evento en el cuerpo, y TRAK ejecuta la acción correspondiente.

Nota: Para obtener sus credenciales de integración (identificador y clave), contacte con soporte@trak.es o con su persona de contacto en TRAK.


Cómo enviar un evento

Punto de conexión

EntornoURL
Staginghttps://stg.trakphysioapi.com/events/submit_event/
Producciónhttps://trakphysioapi.com/events/submit_event/
  • Método: POST
  • Content-Type: application/json

Cabeceras

CabeceraObligatoriaDescripción
X-Integration-IdSu identificador de integración, proporcionado por TRAK.
Content-Typeapplication/json.
SignatureFirma del cuerpo para verificar la autenticidad (ver más abajo).

Firma de la petición

Para garantizar que la petición proviene de usted, cada llamada debe incluir la cabecera Signature con una firma HMAC-SHA256 del cuerpo, generada con la clave compartida que le entrega TRAK.

La firma se calcula sobre el cuerpo JSON serializado sin espacios (separadores , y :):

import hmac, hashlib, json

data_json = json.dumps(payload, separators=(",", ":")) # sin espacios
signature = hmac.new(
key=SHARED_SECRET.encode("utf-8"),
msg=data_json.encode("utf-8"),
digestmod=hashlib.sha256,
).hexdigest()
# -> enviar en la cabecera "Signature"

Importante: el cuerpo debe enviarse exactamente igual que se firmó. Cualquier diferencia (espacios o cambio en el orden de las claves) invalidará la firma.


Eventos

Alta de paciente

Da de alta el paciente en TRAK. Si el paciente ya existía (mismo user_id), se reactiva.

Cuerpo:

{
"event": "patientPrescribedApp",
"user_id": "123",
"patient": {
"name": "John Doe",
"email": "johndoe@gmail.com"
}
}
CampoObligatorioDescripción
eventDebe ser patientPrescribedApp.
user_idIdentificador del paciente en su sistema.
patient.nameNombre del paciente.
patient.emailEmail del paciente.

Baja de paciente

Desactiva el paciente en TRAK.

Cuerpo:

{
"event": "patientUnprescribedApp",
"user_id": "123"
}
CampoObligatorioDescripción
eventDebe ser patientUnprescribedApp.
user_idIdentificador del paciente en su sistema.

Respuestas

CódigoSignificado
200Evento procesado correctamente.
400Faltan datos obligatorios o la petición no es válida.
401Firma inválida.
503El evento indicado no está soportado.
// 200 OK
{ "message": "Event processed successfully." }

Ejemplos con curl

Los ejemplos usan el host de staging. En producción, sustituya stg.trakphysioapi.com por trakphysioapi.com.

# Alta de paciente
curl -X POST https://stg.trakphysioapi.com/events/submit_event/ \
-H "Content-Type: application/json" \
-H "X-Integration-Id: <su_identificador>" \
-H "Signature: <firma_del_cuerpo>" \
-d '{"event":"patientPrescribedApp","user_id":"123","patient":{"name":"John Doe","email":"johndoe@gmail.com"}}'

# Baja de paciente
curl -X POST https://stg.trakphysioapi.com/events/submit_event/ \
-H "Content-Type: application/json" \
-H "X-Integration-Id: <su_identificador>" \
-H "Signature: <firma_del_cuerpo>" \
-d '{"event":"patientUnprescribedApp","user_id":"123"}'