Autenticacion
Mibizum usa API keys con scope, no OAuth ni sesiones. Cada tenant tiene dos pares de claves (live y test) y dentro de cada par dos roles (publica y privada).
Tipos de clave
| Tipo | Prefijo | Donde usarla | Que puede |
|---|---|---|---|
| Publica live | mb_pk_live_ | Frontend del navegador, widget, SDK JS publico | Solo lectura: /search, /track, /widget-bootstrap |
| Privada live | mb_sk_live_ | Backend de tu tienda, scripts de indexacion, server-to-server | Lectura + escritura: indexar, gestionar sinonimos, reglas |
| Publica test | mb_pk_test_ | Staging del frontend | Igual que la publica live pero contra el tenant test |
| Privada test | mb_sk_test_ | Staging del backend | Igual que la privada live pero aislada |
Critico
La clave privada nunca debe aparecer en HTML, JS del navegador, repos publicos, capturas o logs accesibles desde fuera. Si se filtra, rotarla inmediatamente desde Ajustes > API Keys.
Como autenticar
Todas las peticiones llevan la cabecera estandar:
http
Authorization: Bearer mb_pk_live_a1b2c3d4...Ejemplo con curl:
bash
curl https://api.mibizum.io/v1/tu-tienda/search?q=hidratante \
-H "Authorization: Bearer mb_pk_live_a1b2c3d4..."Ejemplo con fetch desde el navegador (usar SIEMPRE la publica):
js
const r = await fetch(
'https://api.mibizum.io/v1/tu-tienda/search?q=hidratante',
{ headers: { Authorization: `Bearer ${publicKey}` } },
);Ejemplo con el SDK JS (el SDK maneja la cabecera por ti):
ts
import { Mibizum } from '@mibizum/sdk';
const mb = Mibizum.init({ tenant: 'tu-tienda', publicKey: 'mb_pk_live_...' });
const r = await mb.search('hidratante');Codigos de respuesta de auth
| Codigo | Significado | Como arreglarlo |
|---|---|---|
401 unauthorized | Cabecera ausente o token malformado | Anadir Authorization: Bearer <key> |
401 invalid_key | La clave no existe o esta revocada | Verifica en el panel; regenera si dudas |
403 forbidden_scope | Usaste publica en endpoint de escritura | Cambia a la privada en tu backend |
403 tenant_mismatch | La clave pertenece a otro tenant del que llamas | Verifica tenant_slug en la URL |
429 rate_limited | Superado el rate limit | Espera el Retry-After |
Rotacion de claves
Buenas practicas:
- Rota las claves cada 90 dias o tras cualquier sospecha de filtracion.
- Manten dos claves activas durante la rotacion para no romper produccion: crea la nueva, deploya, revoca la vieja.
- Usa claves test para todo lo que no sea prod: el tenant test esta totalmente aislado, no contamina metricas reales.
- Audita el uso en Ajustes > API Keys > Actividad: ves IPs, ultimas llamadas y posibles abusos.
Restricciones por IP (proximamente)
En la roadmap esta poder restringir cada clave privada a una lista de IPs o rangos CIDR. Mientras tanto, mantente las privadas solo en tu servidor.