Obtener la configuración
El owner debe abrir Agenda → Configuración → Calendario embebido. Desde ahí copia el código, revela el secreto y, después de validar la integración, activa Exigir firma.Parámetros aceptados
Las claves de metadata se normalizan a minúsculas, admiten
a-z, 0-9, _ y -, y se recortan a 40 caracteres. Se guardan hasta 20 claves, con valores de hasta 500 caracteres y un máximo total serializado de 4 KB. Los valores que no cumplen se descartan.
Los datos prefill_* solo se fuerzan en el backend cuando la firma es válida. Sin firma pueden verse bloqueados en la interfaz, pero el visitante puede alterar la URL antes de abrirla y el backend no los considera datos confiables.
Construir la cadena canónica
- Conservá solamente
prefill_*,metadata_*yexp. - Convertí cada valor a string. Omití valores nulos.
- Ordená los pares por nombre de clave ascendente.
- Aplicá percent-encoding RFC 3986 a cada clave y valor por separado: solo
A-Z a-z 0-9 - . _ ~quedan sin escapar y el hexadecimal va en mayúscula. - Uní los pares como
clave=valorcon&.
embed ni sig.
HMAC-SHA256(secreto, cadena_canónica) y agregá el digest hexadecimal como sig.
Con el secreto mi-secreto, la firma del ejemplo es:
Generar una URL en Node.js
Generar una URL en Python
Definir vencimiento
Mandáexp como timestamp Unix en segundos y firmalo junto con los demás parámetros. Si está vencido o no es un entero válido, Turnito rechaza la reserva. Usá ventanas cortas, de minutos u horas.
Interpretar la validación
- Firma válida: Turnito fuerza los datos precargados y guarda la metadata normalizada.
- Firma inválida o vencida: la reserva se rechaza.
- Firma ausente con Exigir firma activo: la reserva se rechaza cuando la URL incluye parámetros firmables.
- Embed sin
prefill_*,metadata_*niexp: no exige firma y funciona como un calendario común.
Probar la URL
Este probador calcula la firma en tu navegador. Usalo únicamente con un secreto descartable recién generado y antes de publicar la integración. Cuando termines, regenerá el secreto y guardá el nuevo solo en tu backend.Diagnosticar una firma inválida
Compará, en este orden:- El conjunto exacto de parámetros firmados.
- El orden alfabético de las claves.
- El percent-encoding RFC 3986 de claves y valores.
- El timestamp
expen segundos. - El secreto vigente de esa agenda.