Skip to content

Mibizum.init(opts)

Configura el cliente. Devuelve una instancia con el resto de metodos.

Firma

ts
function init(opts: InitOptions): MibizumClient;

interface InitOptions {
  /** Slug del tenant. Lo recibes al crear cuenta en mibizum.io. */
  tenant: string;
  /** API key publica (`mb_pk_live_...` o `mb_pk_test_...`). NUNCA la privada. */
  publicKey: string;
  /** URL base del API. Default: produccion. Util para staging / on-prem. */
  baseUrl?: string;
  /** Data source por defecto (e.g. `productos`, `recetas`). Default: el del tenant. */
  source?: string;
  /** Debounce en ms entre keystrokes para autocompletar. Default: 0 (el backend ya debounce). */
  debounceMs?: number;
  /** Persistir sessionId en localStorage. Default: true. */
  persistSession?: boolean;
  /** Logger custom. Default: console. */
  logger?: { debug: (...a: unknown[]) => void; warn: (...a: unknown[]) => void };
}

interface MibizumClient {
  search:           (q: string, opts?: SearchOptions) => Promise<SearchResult>;
  trackClick:       (itemId: string, opts?: TrackClickOptions) => Promise<void>;
  trackConversion:  (opts: TrackConversionOptions) => Promise<void>;
  getSessionId:     () => string;
  on:               (event: MibizumEvent, handler: Function) => () => void;
}

Ejemplo

ts
import { Mibizum } from '@mibizum/sdk';

const mb = Mibizum.init({
  tenant: 'tu-tienda',
  publicKey: 'mb_pk_live_a1b2c3d4...',
  baseUrl: 'https://api.mibizum.io/v1',
  source: 'productos',
  debounceMs: 150,
  persistSession: true,
});

// El cliente esta listo. Usa `mb.search()`, `mb.trackClick()`, etc.

Multiples tenants

Si tu app sirve a varios tenants (caso raro pero valido), crea instancias separadas:

ts
const mbA = Mibizum.init({ tenant: 'tienda-a', publicKey: 'mb_pk_..._a' });
const mbB = Mibizum.init({ tenant: 'tienda-b', publicKey: 'mb_pk_..._b' });

Cada instancia tiene su propio sessionId y no comparten estado.

Singleton global

Si no quieres pasar la instancia por parametros, el SDK la expone tambien como window.__mibizum (en el navegador):

ts
Mibizum.init({ ... });
// ... en otro fichero:
window.__mibizum.search('hidratante');

Solo recomendado para integraciones rapidas. En apps grandes, importa la instancia explicitamente.

Documentacion oficial de Mibizum.