Skip to main content

Esquema

Todas las rutas bajo /api/v1/cep/* requieren el header:
x-api-key: vk_live_xxxxxxxx.SECRETO
Internamente Veripay:
  1. Extrae el prefijo (vk_live_xxxxxxxx) y busca la key en la base.
  2. Calcula HMAC-SHA256(secret_global, api_key_completo) y lo compara en tiempo constante contra el hash almacenado.
  3. Si coincide y la key no está revocada, aplica rate limit y cuota mensual antes de dejar pasar la petición al backend.
El secreto plano de tu key nunca se almacena. Si la pierdes, debes generar una nueva.

Formato de la key

vk_<env>_<prefijo8>.<secreto24>
   │      │           │
   │      │           └── 24 chars base62 (parte secreta)
   │      └── 8 chars base62 (lookup público en DB)
   └── live | test
  • El prefijo es buscable y aparece en logs/dashboard sin comprometer la key.
  • El secreto sólo lo conoces tú al momento de creación.

Crear una key

Desde el dashboard o vía API:
curl -X POST "https://veripay.datagora.mx/api/keys" \
  -H "Cookie: sb-access-token=..." \
  -H "Content-Type: application/json" \
  -d '{ "name": "backend-prod", "env": "live" }'
Respuesta (la key completa solo se devuelve aquí):
{
  "id": "uuid",
  "prefix": "vk_live_aB3xQ91p",
  "api_key": "vk_live_aB3xQ91p.SXXXXXXXXXXXXXXXXXXXXXX"
}

Revocar una key

curl -X DELETE "https://veripay.datagora.mx/api/keys/{id}" \
  -H "Cookie: sb-access-token=..."
Marca revoked_at con el timestamp actual. La key deja de funcionar inmediatamente; los registros históricos se conservan.

Buenas prácticas

Crea keys distintas para staging, prod y cada microservicio. Si una se compromete, revocas sin downtime global.
El header x-api-key debe agregarse desde tu backend. Si necesitas hacer descargas desde el navegador, proxea a través de tu API.
Genera la nueva key, despliégala, y revoca la anterior cuando confirmes que el tráfico migró.
Revisa los logs del dashboard. Picos inesperados → posible filtración.

Sesión de dashboard

Las rutas de gestión (/api/keys, /api/admin/*) usan cookie de Supabase (sb-access-token) emitida al iniciar sesión, no la API key. No mezcles los dos esquemas.