Área privada

Documentación técnica

Manual de integración del widget de accesibilidad y referencia de la API de gestión de dominios.

Integración del widget

Carga automática (Plug & Play)

Implementación básica sin configuración adicional. El widget se carga inmediatamente con los valores por defecto.

<script defer src="https://api.addaw.org/addaw-wba11y.min.js"></script>

Inicialización vía API (Recomendado)

Permite definir retardos y configuraciones visuales personalizadas desde JavaScript.

<script defer src="https://api.addaw.org/addaw-wba11y.min.js"></script>
<script defer>
Addaw.init({
  delay: 5000,
  position: 'left',
  dark_mode: '1',
  lang: 'es',
  logo_url: 'https://yoursite.com/logo.png',
  logo_link: 'https://yoursite.com'
});
</script>

Parámetros de inicialización

Parámetro Tipo Por defecto Descripción
delay Number 0 Tiempo en ms para carga diferida.
position String 'right' Ubicación del botón: left o right.
dark_mode String / Bool '0' 1 para iniciar en modo oscuro (si no hay memoria).
lang String 'auto' Código ISO de idioma (es, en, fr...).
autoInit Boolean true Si es false, el widget espera a ser llamado manualmente.
logo_url URL ADDAW logo Imagen personalizada para el footer del widget.
logo_link URL https://addaw.org/es Destino del clic en el logo personalizado.

Métodos de control (API pública)

Utilice estos comandos desde la consola o sus scripts para interactuar con el widget una vez cargado.

Addaw.initialized — Verifica si el widget está activo.

if (Addaw.initialized) {
  console.log('Widget is active');
}

Addaw.destroy() — Elimina el widget completamente del sitio.

Addaw.destroy();

Addaw.init({...}) — Re-inicializa con nueva configuración.

Addaw.init({
  position: 'left',
  dark_mode: '1',
  lang: 'en'
});

Jerarquía de configuración

El widget sigue una lógica estricta de prioridad para aplicar los ajustes:

1.º Persistencia Memoria del navegador (LocalStorage). Si el usuario ya lo usó, su elección manda.
2.º API Manual Lo que el desarrollador define en Addaw.init().
3.º URL / Default Parámetros del src del script o valores de fábrica.

Control manual avanzado

Para aplicaciones que requieren un inicio bajo demanda (por ejemplo, tras pulsar un botón específico):

<script>
window.AddawConfig = { autoInit: false };
</script>
<script defer src="https://api.addaw.org/addaw-wba11y.min.js"></script>
<script defer>
document.addEventListener('DOMContentLoaded', function() {
  Addaw.init({
    position: 'right',
    lang: 'es'
  });
});
</script>

API de gestión de dominios

API REST para que los empleados gestionen los dominios vinculados a su cuenta y personalicen la apariencia y el comportamiento del widget (paleta de colores y parámetros equivalentes a Addaw.init).

Autenticación

Todas las peticiones (excepto login) requieren un token Bearer en la cabecera Authorization.

POST https://panel.addaw.org/webService/ApiEmpleadoLogin

$ch = curl_init('https://panel.addaw.org/webService/ApiEmpleadoLogin');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'correo' => 'tu_correo@ejemplo.com',
    'pass'   => 'tu_password',
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

$token = $response['access_token'];

Dar de alta un dominio

Registra un nuevo dominio vinculado a tu cuenta. La operación es idempotente: si el dominio ya existe, no se duplica.

POST https://panel.addaw.org/webService/ApiEmpleadoDominioAlta

$ch = curl_init('https://panel.addaw.org/webService/ApiEmpleadoDominioAlta');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['dominio' => 'www.example.com']));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

Dar de baja un dominio

Desactiva un dominio. No se elimina, se marca como inactivo.

POST https://panel.addaw.org/webService/ApiEmpleadoDominioBaja

$ch = curl_init('https://panel.addaw.org/webService/ApiEmpleadoDominioBaja');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['dominio' => 'www.example.com']));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

Obtener mis dominios

Devuelve la lista de dominios activos vinculados a tu cuenta.

GET https://panel.addaw.org/webService/ApiEmpleadoMisDominios

$ch = curl_init('https://panel.addaw.org/webService/ApiEmpleadoMisDominios');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

Listar colores disponibles

Devuelve los nombres e ids de las paletas de colores disponibles para personalizar el widget.

GET https://panel.addaw.org/webService/ApiEmpleadoColoresDisponibles

$ch = curl_init('https://panel.addaw.org/webService/ApiEmpleadoColoresDisponibles');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

Personalizar un dominio

Guarda la configuración del widget para un dominio: paleta de colores y, de forma opcional, los mismos parámetros que admite Addaw.init (idioma, modo oscuro, posición, inicio automático, logos, retardo y foco en modales). La primera vez debe enviarse el id de paleta `color`; en peticiones posteriores puede omitirse y se conservan los colores ya guardados, o puede actualizarse solo parte de los campos. Para anular un valor almacenado y volver al comportamiento por defecto del widget, envíe la clave con `null`.

Parámetros del cuerpo JSON

Además de `dominio`, puede incluir los siguientes campos. Los nombres coinciden con la API del widget (`autoInit` y `focusOnContent`; también se aceptan `auto_init` y `focus_on_content`).

Parámetro Tipo Descripción
color integer Id. de paleta en el listado de colores disponibles. Obligatorio la primera vez que se configura el dominio; si se omite en actualizaciones posteriores, se mantienen los colores ya almacenados.
lang string | null Código ISO 639-1 de dos letras (p. ej. `es`) o `null` para el valor por defecto del widget.
dark_mode boolean | null `true` / `false`, `1` / `0` o `null` (modo oscuro inicial; respeta preferencias ya guardadas en el navegador).
position string | null `left`, `right` o `null`.
autoInit / auto_init boolean | null `true` / `false`, `1` / `0` o `null` (inicio automático al cargar el script).
logo_url string | null URL del logo en el pie (http, https, ruta absoluta o relativa `./`) o `null`.
logo_link string | null URL de destino al pulsar el logo o `null`.
delay integer | null Entero en milisegundos entre 0 y 86400000 para retrasar el inicio, o `null`.
focusOnContent / focus_on_content boolean | null `true` / `false`, `1` / `0` o `null` (foco en el contenido de modales internos).

Al servir `addaw-wba11y.min.js` desde el CDN, el dominio se detecta por la cabecera Referer. Si hay opciones guardadas para ese dominio, se antepone `window.AddawConfig = { ... };` al script, de modo que se apliquen antes del arranque automático (el usuario puede seguir teniendo prioridad vía almacenamiento local, según la jerarquía indicada en la sección del widget).

POST https://panel.addaw.org/webService/ApiEmpleadoPersonalizarDominio

$ch = curl_init('https://panel.addaw.org/webService/ApiEmpleadoPersonalizarDominio');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'dominio' => 'example.com',
    'color'   => 2,
    'lang'    => 'es',
    'position' => 'left',
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);