Toda la documentación

Empezar

  1. 01Primeros pasos
  2. 02Instalación
  3. 03Seguimiento

Funciones

  1. 04El panel
  2. 05Objetivos
  3. 06Enlaces cortos
  4. 07Fuentes y agentes de IA
  5. 08Informes por email
  6. 09Comprobación programada
  7. 10Pregunta a tu IA

Referencia

  1. 11Configuración
  2. 12API HTTP

Plataformas

  1. 13Servidor independiente
  2. 14PHP
  3. 15WordPress
  4. 16Drupal
  5. 17Craft CMS
  6. 18Python
  7. 19Rails
  8. 20Ruby
  9. 21Go
  10. 22Java
  11. 23.NET
  12. 24Elixir
  13. 25Rust

Confianza

  1. 26Privacidad

Referencia

API HTTP

Todo lo que muestra el panel está en JSON en /runlight/api, para tus propios scripts y herramientas.

El panel está construido sobre esta API, así que todo lo que te muestra lo puedes obtener tú mismo. Envía un token como bearer.

bash

curl https://example.com/runlight/api/stats?period=30d -H "Authorization: Bearer $RUNLIGHT_TOKEN"

Para los scripts, crea un token de solo lectura en Ajustes, API e IA, y guarda RUNLIGHT_TOKEN solo para ti. Un token de solo lectura puede leer todos los informes de abajo, incluidos los enlaces cortos y los clics de cada uno, y nunca cambia nada. Puedes limitarlo a un sitio, y deja de funcionar en el momento en que lo borras. Los endpoints que cambian algo aceptan RUNLIGHT_TOKEN, un propietario, administrador o miembro con sesión iniciada, tu comprobación authorize o un token manage para su único sitio. Un miembro puede cambiarlo todo salvo el servicio de correo, los ajustes del asistente y eliminar un sitio. Los mismos tokens conectan asistentes de IA, como explica Pregunta a tu IA.

Un token manage pertenece a un servidor independiente que muestra este sitio. Lee como un token de solo lectura y además puede cambiar los objetivos, embudos, enlaces cortos, dominios de enlaces, informes por email y enlaces para compartir de un sitio, junto con su nombre, zona horaria y retención, y obtener tickets para el selector de elementos. Nunca puede tocar otros sitios, personas, tokens, importaciones ni el servicio de correo, y no puede cambiar dónde vive el sitio. Ve qué servicio de correo envía los informes y desde qué dirección, y las claves y los datos de la cuenta del servicio quedan ocultos para él. Solo añade dominios de enlaces e informes por email cuando la instalación conoce su propia dirección, mediante origin en routes() o RUNLIGHT_URL en el servidor independiente. El servidor independiente obtiene uno por OAuth al conectar el sitio, así que rara vez tendrás que crear uno a mano.

Un token embed pertenece a un plugin de WordPress, Drupal o Craft que muestra el panel de un sitio dentro de las páginas de administración del CMS. En cualquier otro lugar responde 403 con token_embed_only. Su único uso es POST /api/embed, que crea un ticket para una sola carga del panel en un marco, así que quien lo tenga puede leer el panel de ese sitio. Crea uno en Ajustes, Instalación, en Clave del panel, o con POST /api/tokens.

El botón Conectar de un plugin de CMS obtiene su clave del panel por OAuth con el scope cms. La página de consentimiento ofrece los sitios que cuentan el dominio del plugin, o el único sitio cuando no indica dominios y por tanto cuenta cualquiera, o un sitio nuevo cuando los sitios se gestionan en el panel. La respuesta del token lleva la clave del panel como access_token, el id del sitio como site y su clave de agentes como agents_key.

Las peticiones que cambian algo deben enviar content-type: application/json.

Leer informes

Todos los informes aceptan los mismos parámetros de consulta.

Parámetro Valores
site El id del sitio; por defecto, el primer sitio.
period today, yesterday, 7d, 30d, 90d, month, last_month, year, 12mo o all.
from, to Fechas como YYYY-MM-DD, ambas incluidas, en lugar de un periodo.
compare previous (el predeterminado), year, custom u off.
compare_from, compare_to Las fechas con las que comparar, para compare=custom.
filter dimension:op:value, donde op es is, not o contains. Repítelo para aplicar hasta seis.
interval hour, day, week o month para las series; por defecto se elige según el rango.
Endpoint Devuelve
GET /api El nombre, la versión y la versión de la API de la instalación, sin necesidad de token.
GET /api/sites Todos los sitios, con la fecha de su última visita.
GET /api/stats Visitantes, visitas, páginas vistas, páginas por visita, tasa de rebote y duración de la visita, con las del periodo de comparación.
GET /api/series Las mismas cifras para cada hora, día, semana o mes del rango.
GET /api/breakdown?dimension= Filas de una dimensión, con limit (hasta 1000) y page.
GET /api/rhythm Visitas por día de la semana y hora.
GET /api/realtime Personas, páginas, fuentes y países de los últimos 5 minutos, con las páginas vistas por minuto y la actividad reciente de los últimos 30.
GET /api/goals Todos los objetivos con sus conversiones, visitantes que convirtieron, tasa e ingresos.
GET /api/goals/:id Un objetivo con una serie y sus conversiones por canal, fuente y página.
GET /api/funnels Todos los embudos con cuántas visitas llegaron a cada paso, en orden, dentro de una visita.
GET /api/event-props?event= Los nombres de las propiedades enviadas con un evento, y los valores de una de ellas, elegida con key (por defecto la primera) y limit (hasta 1000).
GET /api/export Un ZIP de archivos CSV para la vista, con las cifras, la serie y cada desglose, con los mismos parámetros que los informes.
GET /api/journeys Los caminos que siguen las visitas: las páginas principales de cada paso, los flujos entre pasos y los caminos más comunes. Acepta steps (de 2 a 8), páginas start y end, y through como step:page para seguir una página.
GET /api/links Los enlaces cortos con sus clics.
GET /api/links/:id Los clics de un enlace a lo largo del tiempo, sus fuentes, países, dispositivos y navegadores.
GET /api/icon El icono del sitio como imagen, descargado del propio dominio del sitio, o un 404 cuando no tiene. Los enlaces para compartir también pueden leerlo.

Un enlace para compartir y el panel dentro de un CMS leen los informes de la tabla de arriba sin token, salvo GET /api/links y GET /api/links/:id, para el único sitio que muestran. La página de un enlace para compartir envía x-runlight-share con su id. La página del panel integrado envía x-runlight-embed con la sesión que abrió su ticket, que dura una hora y termina al instante cuando se borra su token. Cuando ha caducado, las lecturas responden 401 con embed_expired. Una petición que lleva x-runlight-embed no obtiene nada más, envíe lo que envíe, y cualquier otra petición con esa cabecera responde 403 con share_not_available.

breakdown y filter aceptan las dimensiones page, entry, exit, hostname, event, referrer, source, channel, utm_source, utm_medium, utm_campaign, utm_term, utm_content, country, region, city, browser, browser_version, os, os_version, device, screen y language. breakdown acepta además ai_agent y ai_page.

Cambiar cosas

Endpoint Hace
PATCH /api/sites/:id Cambia el name, la timezone o los retentionMonths de un sitio (6, 12, 24, 36 o 60, o null para conservarlo todo). En el servidor independiente, también los hostnames.
POST /api/sites Añade un sitio, cuando los sitios se gestionan en el panel como en el servidor independiente, a partir de { "name", "hostnames", "timezone" }. Para conectar otra instalación, envía en su lugar { "remote": { "url", "token" } }.
DELETE /api/sites/:id Elimina un sitio gestionado y todo lo registrado para él, o desconecta uno conectado.
POST /api/sites/connect Empieza a conectar otra instalación a través de su página de consentimiento, a partir de { "url" }. Responde con authorize, la dirección a la que enviar al propietario. Añade site con el id de un sitio de la instalación para ofrecer ese primero.
GET /api/sites/connect/done Donde la página de consentimiento devuelve al propietario. Termina la conexión y abre el panel en el sitio.
POST /api/goals, PATCH /api/goals/:id, DELETE /api/goals/:id Añade, cambia o quita un objetivo.
POST /api/pick Crea un ticket para el selector de elementos a partir de { "origin" }, el origen del propio panel, al que el selector envía su elección y a ningún otro sitio. El ticket también nombra el sitio, y el selector no hace nada en las páginas de otro sitio. Un ticket vale durante media hora. Puede pedirlo quien pueda cambiar cosas, y también un token de gestión para su sitio, cuyos tickets solo nombran el hub desde el que se conectó.
POST /api/funnels, PATCH /api/funnels/:id, DELETE /api/funnels/:id Añade, cambia o quita un embudo, enviado como { "name", "steps" } con entre dos y ocho pasos de { "kind", "match" }, donde kind es page o event.
POST /api/links, PATCH /api/links/:id, DELETE /api/links/:id Añade, cambia o quita un enlace corto.
POST /api/links/import Añade muchos enlaces cortos a la vez a partir de { "rows" }, hasta 5.000 objetos con url y, si quieres, slug, name y domain. Responde con cuántos creó y qué filas fallaron.
POST /api/links/import/:source Un paso de una importación desde umami, dub, bitly, shortio o rebrandly, enviado como { "credentials", "cursor", "done" }. Envía el cursor con el que responde hasta que vuelva como null. Las credenciales se usan y nunca se guardan.
POST /api/import/umami/websites Lista los sitios de una cuenta de Umami, a partir de { "credentials" }.
POST /api/import/umami/visits Un paso para traer el historial de visitas de un sitio de Umami, a partir de { "credentials", "website", "cursor" }, repetido hasta que cursor sea null.
POST /api/import/csv/visits Escribe hasta 2.000 filas de un CSV de visitas, enviadas como { "rows": [...] } con cada fila como un objeto de sus columnas, y responde { "pageviews", "events", "visits", "skipped" }. Envía las filas de la más antigua a la más reciente, sin repartir un mismo momento entre dos peticiones, ya que cada petición reemplaza lo que una importación anterior escribió en su intervalo de tiempo.
GET, POST /api/link-domains, DELETE /api/link-domains/:domain Lista, añade o quita dominios de enlaces personalizados. Un dominio de enlaces debe ser un nombre público, y nunca el del propio panel ni el de un sitio.
GET /api/link-domains/:domain/check Si las peticiones a un dominio de enlaces llegan a Runlight, como { "domain", "working", "reason", "code", "target" }, donde reason dice qué respondió en su lugar, code le da nombre y target indica el host al que debe apuntar un registro CNAME y las addresses públicas que debe usar un registro A o AAAA.
GET, POST /api/shares, PATCH, DELETE /api/shares/:id Lista, añade, renombra o quita enlaces para compartir.
GET, PUT, DELETE /api/mail, POST /api/mail/test Lee, define, quita o prueba el servicio de correo. Las claves nunca se devuelven. GET también responde source (code, dashboard, app o null) y services, los servicios que ofrece Ajustes. Cuando la aplicación pasa su propio sistema de envío, tiene también app, con via, from, fromName y replaced, que es true mientras un servicio guardado envía en su lugar.
GET, POST /api/reports, DELETE /api/reports/:id, POST /api/reports/:id/send Lista, añade o quita destinatarios de informes, o envía un ejemplo.
GET o POST /api/check Ejecuta la comprobación programada.
POST /api/observe Registra una página servida a un agente de IA, enviada como { "url", "userAgent", "at" }, donde at es cuándo se sirvió (dentro de la última semana, como milisegundos epoch o una fecha ISO) y se puede omitir. Envía hasta 500 a la vez como { "fetches": [...] }. Acepta el token, la clave de agentes del sitio o la observeKey de toda la instalación, y la llaman los plugins de CMS y el lector de logs. Una sola petición responde 204 sin cuerpo, y un lote responde { "recorded", "skipped" } con cuántas registró y cuántas dejó fuera.
GET /api/tokens Lista los tokens de API con el nombre, el sitio, el scope, los cuatro últimos caracteres y la fecha del último uso de cada uno. Los tokens en sí nunca se devuelven.
POST /api/tokens Crea un token a partir de { "name", "site", "scope" } y lo devuelve una vez como secret. Deja site vacío para todos los sitios. scope es read (el predeterminado), manage o embed, y los dos últimos necesitan un site.
POST /api/embed Crea un ticket que abre una vez el panel del sitio en un marco, a partir de { "origin" }, el origen de la página de administración que lo enmarca, como https://example.com. Solo puede pedirlo un token embed, y el host del origen, sin www., debe ser uno de los dominios de su sitio. Responde 201 con { "ticket", "site", "expiresAt", "path" }, donde path es /runlight/embed?ticket=…. Un ticket funciona una vez, en un plazo de cinco minutos.
GET /embed?ticket= El panel para un marco, fuera de /api. Con un ticket que no se ha usado ni ha caducado, responde 200 con una página que solo el origen del ticket puede enmarcar (frame-ancestors en su CSP, y sin X-Frame-Options) y que mantiene en memoria una sesión de una hora, sin cookie. Un ticket ya usado o caducado responde 410 con una página que lo indica y pide a la página de administración que se recargue, enmarcada por el mismo origen. Cualquier otra cosa responde 404 con una página sencilla que nada puede enmarcar. Añade theme=light o theme=dark para que combine con la administración que lo rodea hasta que alguien elija un tema en el marco.
GET /api/observe-key, POST /api/observe-key/new Lee la clave de agentes de un sitio para los plugins de CMS, que se crea la primera vez que se pide, o la reemplaza por una nueva, lo que detiene la anterior al instante.
GET /api/token Dice qué puede hacer el token enviado con ella, como { "scope", "site" }. Un hub lo pregunta antes de ofrecer cambiar nada.
DELETE /api/token Borra el token enviado con ella. Un hub lo hace cuando desconecta un sitio o recibe un token nuevo.
DELETE /api/tokens/:id Borra un token, que deja de funcionar al instante.
GET, PUT, DELETE /api/assistant Lee, define o quita { "provider", "model", "baseUrl", "key" } del asistente del panel. La clave nunca se devuelve. Solo el propietario y los administradores, aunque cualquiera en el panel puede preguntar si está configurado.
POST /api/assistant/models Los modelos que ofrece un proveedor, a partir de { "provider", "baseUrl", "key" }, para el formulario de ajustes. Omite key para usar la guardada, lo que solo funciona con el mismo proveedor y la misma dirección. Solo el propietario y los administradores.
POST /api/assistant/chat Pregunta al asistente, enviando { "site", "messages", "view", "language" }, donde los mensajes son pares { "role", "content" } que terminan con una pregunta. Responde { "reply", "tools" }. Solo personas en el panel, nunca tokens de API ni enlaces para compartir. Cada persona puede hacer treinta preguntas por hora y dos a la vez, y cada lector el número diario que fije el propietario, con 429 al pasar cualquiera de los dos límites.
PUT /api/assistant/limits Define cuántas preguntas puede hacer cada lector al día, a partir de { "viewerDaily" }, un número entero de 0 a 1.000. Empieza en 50, y GET /api/assistant lo muestra al propietario y a los administradores. Solo el propietario y los administradores.
GET /api/account La cuenta de la persona con sesión iniciada, como { "account" }. Cualquiera con sesión iniciada, lectores incluidos.
POST /api/account/password Cambia tu propia contraseña, a partir de { "current", "next" }. Todas las demás sesiones terminan, y este navegador recibe una sesión nueva.
POST /api/account/2fa/start, /confirm, /recovery, /disable Activa el inicio de sesión en dos pasos, lo confirma con el primer { "code" } de la aplicación, crea códigos de recuperación nuevos o lo desactiva. start responde { "secret", "uri" } para la aplicación de autenticación, y confirm y recovery responden { "recovery" } con los códigos. Todos salvo confirm piden tu { "password" }.
GET, POST /api/people Lista a todas las personas con cuenta y las invitaciones abiertas, como { "people", "invites" }, o invita a alguien a partir de { "email", "role" }, donde role es admin, member o viewer. Una invitación responde 201 con { "invite", "link", "emailed" }, y su enlace vale durante siete días. Solo el propietario y los administradores.
PATCH, DELETE /api/people/:id Cambia el { "role" } de alguien, o lo quita junto con los tokens que creó. Quien pasa a ser lector también pierde sus tokens. Solo el propietario puede cambiar o quitar al propietario, y nadie puede quitarse a sí mismo. Solo el propietario y los administradores.
DELETE /api/people/:id/2fa Desactiva el inicio de sesión en dos pasos de otra persona, para quien perdió el teléfono y los códigos de recuperación, a partir de tu propia { "password" }. Nunca el del propietario. Solo el propietario y los administradores.
POST /api/people/:id/owner Pasa la propiedad a un administrador, a partir de tu { "password" }, y te convierte en administrador. Solo el propietario.
DELETE /api/invites/:id, POST /api/invites/:id/resend Cancela una invitación, o la vuelve a enviar con un enlace nuevo que anula el anterior. Solo el propietario y los administradores.
POST /mcp El servidor MCP para asistentes de IA, descrito en Pregunta a tu IA.

Los endpoints de la cuenta y de las personas existen cuando las cuentas están activadas, como en el servidor independiente. Solo responden a una persona con sesión iniciada en el panel, nunca a un token, y responden 401 con sign_in a cualquier otro.

Errores

Los errores son JSON, { "error", "code", "params" }. error dice qué salió mal en inglés sencillo, code le da nombre y params, cuando los hay, rellenan los marcadores de su texto. El panel muestra cada código en su propio idioma, y un script puede fiarse del código allí donde el texto en inglés puede cambiar.

Estado Cuándo
400 Algo de la petición está mal o falta.
401 Falta el token o no es uno que esta instalación conozca.
403 Un lector o un token de API intenta un cambio que no puede hacer.
404 Lo que nombra la petición no está.
409 Un nombre ya está ocupado, como un dominio de enlaces que tiene otro sitio.
413 Más de 500 accesos a la vez en POST /api/observe.
415 Una escritura que no es application/json.
429 Demasiadas en poco tiempo, como intentos de inicio de sesión, ejemplos, preguntas al asistente o registros OAuth desde una dirección.
500 Algo falló en el servidor.
502 No se pudo contactar con una instalación conectada, respondió con una redirección o rechazó el token, o falló el servicio de IA.
503 No hay token definido fuera de desarrollo.
504 Una instalación conectada tardó demasiado en responder.

Estos son los códigos, los params que rellena cada uno y el texto que muestra el panel en español. La API envía este texto en inglés en su campo error. Un error que una instalación conectada reenvía a través de un hub conserva su código y sus params, y su error empieza con el host de la instalación. La comprobación de un dominio de enlaces responde su reason con un código check_ de la misma forma.

Código Params Qué dice
account_exists email {email} ya tiene una cuenta.
address_refused host {host} es una dirección link-local o de metadatos de la nube, a la que Runlight nunca se conecta.
admin_only Solo el propietario o un administrador puede cambiar esto.
assistant_address Escribe la dirección del servicio en Ajustes, Asistente de IA.
assistant_address_bad Escribe la dirección del servicio, empezando por https://
assistant_cancelled La pregunta se canceló.
assistant_daily limit Los lectores pueden hacer {limit} preguntas al día. Vuelve a preguntar mañana.
assistant_dashboard Solo el panel puede usar el asistente.
assistant_failed detail El servicio de IA no respondió como se esperaba ({detail}).
assistant_invalid detail El asistente no se guardó ({detail}).
assistant_key provider Escribe tu clave de {provider}.
assistant_limit Usa un número entero de 0 a 1.000.
assistant_model Escribe un modelo en Ajustes, Asistente de IA.
assistant_no_models host {host} no mostró ningún modelo. Escribe el nombre del modelo.
assistant_provider Elige un servicio de IA en Ajustes, Asistente de IA.
assistant_refused detail, host {host} rechazó la solicitud ({detail}).
assistant_slow Esa pregunta tardó demasiado en responderse. Prueba con algo más concreto.
assistant_soon Has preguntado mucho en poco tiempo. Espera un poco y vuelve a preguntar.
assistant_status host, status {host} respondió {status}.
assistant_steps El asistente necesitó demasiados pasos para esa pregunta. Prueba con algo más concreto.
assistant_timeout host {host} tardó demasiado en responder.
assistant_unset El asistente aún no está configurado. Un propietario puede hacerlo en Ajustes, Asistente de IA.
busy Runlight está ocupado comprobando otros inicios de sesión. Inténtalo de nuevo en un momento.
check_https no se pudo conectar por HTTPS
check_not_public no es un nombre de dominio público
check_not_runlight algo respondió, pero no Runlight
check_status status respondió {status}
check_timeout tardó demasiado en responder
code_wrong Ese código no es correcto. Revisa la hora de tu teléfono y prueba con el siguiente.
compare_bad compare Runlight no conoce la comparación "{compare}".
compare_range_bad Elige las dos fechas con las que comparar.
connect_again Vuelve a conectar este sitio para cambiarlo desde aquí.
connect_denied No se permitió la conexión.
connect_endpoints url {url} indicó endpoints en otra dirección.
connect_expired La conexión tardó demasiado o ya se usó. Empieza de nuevo.
connect_failed detail La conexión no empezó ({detail}).
connect_not_runlight url {url} no respondió como una instalación de Runlight.
connect_old url {url} usa una versión antigua de Runlight. Actualízala o conéctala con un token de API de sus ajustes.
connect_refused La instalación no dejó conectarse a este servidor. Empieza de nuevo o conéctala con un token de API.
connect_register reason, url {url} no dejó que este servidor se conectara. {reason}
connect_token La instalación no le dio un token a este servidor. Empieza de nuevo.
connect_url Escribe la dirección de la instalación, como https://example.com/runlight
domain_in_use domain {domain} aloja este panel o uno de tus sitios. Usa un dominio o subdominio aparte para los enlaces cortos, como go.{domain}.
domain_invalid Eso no es un nombre de dominio.
domain_not_public domain {domain} no es un dominio público. Usa uno al que cualquier navegador pueda llegar.
domain_taken domain {domain} ya pertenece a otro sitio.
email_invalid Escribe un correo electrónico.
embed_expired Este panel ha caducado. Recarga la página para abrirlo de nuevo.
embed_host host {host} no es uno de los dominios de este sitio. Añádelo a los dominios del sitio, en Ajustes, General, o en el código cuando los sitios se definen allí.
embed_origin Envía el origen de la página de administración, como https://example.com
embed_site Una clave del panel es para un solo sitio. Elige el sitio.
embed_token Usa la clave del panel del sitio, creada en Ajustes, Instalación, en WordPress, Drupal y Craft.
event_needed Indica el evento.
filter_bad filter Runlight no entiende el filtro "{filter}".
filters_max max Usa como mucho {max} filtros a la vez.
funnel_exists name Ya hay un embudo llamado "{name}".
funnel_invalid detail El embudo no se guardó ({detail}).
funnel_long Un embudo tiene como mucho ocho pasos.
funnel_name Ponle un nombre al embudo.
funnel_page_bad match "{match}" no es una ruta ni una URL.
funnel_short Un embudo necesita al menos dos pasos.
goal_amount Escribe un importe, como 49 o 9,99.
goal_click_taken match El objetivo de clic "{match}" ya envía eventos con ese nombre.
goal_currency Usa un código de moneda de tres letras, como USD o EUR.
goal_event Escribe el nombre del evento.
goal_event_taken name Un objetivo de evento ya cuenta los eventos "{name}", así que ponle otro nombre a este objetivo de clic.
goal_exists name Ya hay un objetivo llamado "{name}".
goal_invalid detail El objetivo no se guardó ({detail}).
goal_kind Elige qué cuenta el objetivo, un evento, una visita a una página o un clic.
goal_link Escribe la dirección del enlace, como https://buy.stripe.com/*
goal_name Ponle un nombre al objetivo.
goal_page Escribe la ruta de una página, como /gracias o /blog/*
goal_page_bad Esa página no es una ruta ni una URL.
goal_prop_kind Solo un objetivo de evento puede tomar el importe del evento. Usa un importe fijo.
goal_prop_name Un nombre de propiedad usa letras, números, puntos, guiones y guiones bajos.
goal_selector Escribe un selector CSS, como #signup o .buy-button
hub_domains Un hub conectado no puede cambiar los dominios de un sitio.
icon_none Este sitio no tiene icono.
import_csv_batch max Envía como mucho {max} filas a la vez.
import_csv_format Este archivo no es una exportación de Umami ni está en el formato de visitas de Runlight. Revisa su fila de encabezado.
import_day_full limit Un día tiene más de {limit} eventos, más de los que puede leer un paso de importación.
import_failed detail La importación se detuvo ({detail}).
import_key service Escribe tu clave de {service}.
import_refused Se rechazó la clave o el inicio de sesión.
import_slug_bad slug /{slug} tiene caracteres que un slug de Runlight no puede usar.
import_slug_taken name, slug /{slug} ya lo usa "{name}".
import_source source Runlight no puede importar desde {source}.
import_status host, status {host} respondió {status}.
import_umami_address Escribe la dirección de tu Umami, como https://stats.example.com
import_umami_login Escribe una clave de API, o un usuario y una contraseña.
import_website Elige el sitio de Umami que quieres importar.
install_refused Esa instalación rechazó el token.
install_token Escribe un token de API de esa instalación.
internal Algo falló en el servidor. Inténtalo de nuevo.
invite_gone Esta invitación caducó o ya se usó. Pide una nueva.
link_domain domain Primero añade {domain} como dominio de enlaces en Ajustes.
link_long El destino tiene más de 2.000 caracteres.
link_no_slug No se encontró un slug libre. Inténtalo de nuevo.
link_protocol El destino debe empezar por http:// o https://
link_slug Un slug lleva letras, dígitos, guiones y guiones bajos, hasta 100.
link_taken slug /{slug} ya está en uso.
link_url El destino debe ser una URL completa, que empiece por https://
mail_app_failed detail, via {via} no pudo enviar el correo ({detail}).
mail_failed detail No se pudo enviar el correo ({detail}).
mail_field field Falta el campo {field}.
mail_from Escribe la dirección desde la que salen los informes, como reports@example.com.
mail_https La URL del webhook debe usar https.
mail_in_code El servicio de correo está definido en el código, así que no se puede cambiar aquí.
mail_option field, options {field} debe ser uno de estos valores ({options}).
mail_port El puerto debe ser un número entero del 1 al 65535.
mail_refused detail, host {host} rechazó el correo ({detail}).
mail_region Eso no es una región de AWS, como us-east-1.
mail_service service Elige un servicio de correo que se ofrezca aquí. Se envía service cuando el que se pidió no se ofrece.
mail_slow host {host} tardó demasiado en responder, así que el correo no se envió.
mail_unreachable host No se pudo contactar con {host}.
mail_unset Primero configura un servicio de correo.
mail_url Introduce la URL completa del webhook, como https://example.com/hooks/mail.
method_not_allowed Eso no se puede hacer aquí.
not_found Eso no está aquí.
observe_many Envía como mucho 500 solicitudes a la vez.
observe_url Envía la dirección de la página.
origin_needed Indica primero la dirección de este Runlight (RUNLIGHT_URL en el servidor, u origin en routes()) para que un hub conectado pueda añadir dominios de enlaces e informes por correo.
owner_hand_over Solo el propietario puede pasar la propiedad.
owner_needs_admin Hazlo administrador primero.
owner_only Solo un propietario puede cambiar esto.
owner_protected Nadie más que el propietario puede cambiar o quitar al propietario.
password_current_wrong Tu contraseña actual no es correcta.
password_short min Usa una contraseña de al menos {min} caracteres.
password_wrong Tu contraseña no es correcta.
people_owner Solo el propietario o un administrador puede gestionar personas.
pick_hub La dirección de este hub no es desde la que se conectó. Vuelve a conectar el sitio desde aquí.
pick_origin Envía el origen del panel, como https://stats.example.com
pick_return Envía la dirección del panel seguida de /pick-return, en su origen, y un nonce de 32 dígitos hexadecimales
property_bad Runlight no puede leer ese nombre de propiedad.
question_needed Haz una pregunta.
range_bad Esas fechas no son un intervalo que Runlight entienda.
redirected host {host} respondió con una redirección.
remote_slow host {host} tardó demasiado en responder. Prueba con un periodo más corto.
remove_self No puedes quitarte a ti mismo.
report_exists email {email} ya recibe este informe.
report_limit Un sitio puede enviar a 50 direcciones como máximo.
retention_bad months Guarda las visitas {months} meses, o para siempre.
role_needed Elige administrador, miembro o lector.
rows_needed Envía los enlaces como una lista de filas.
sample_soon Se acaba de enviar una muestra. Espera un minuto y vuelve a intentarlo.
sample_soon_hub Un hub conectado puede enviar una muestra cada diez minutos. Espera unos minutos y vuelve a intentarlo.
send_json Envía esto como JSON.
send_object Envía un objeto JSON.
share_gone Este enlace para compartir ya no funciona.
share_not_available Eso no está disponible en un panel compartido.
sign_in Inicia sesión primero.
site_domain_invalid host "{host}" no es un nombre de dominio.
site_domain_needed Añade el dominio del sitio, como example.com
site_domain_taken host, site {host} ya pertenece a {site}.
site_invalid detail El sitio no se guardó ({detail}).
site_name Un nombre de sitio tiene de 1 a 80 caracteres.
site_remote Este sitio lo cuenta su propio Runlight. Vuelve a conectarlo desde sus ajustes para cambiarlo desde aquí.
sites_in_code Aquí los sitios se definen en el código, así que se cambian allí.
smtp_starttls El servidor SMTP no ofrece STARTTLS. Elige TLS o ninguna en Seguridad.
tables_busy Runlight está creando o actualizando sus tablas. Inténtalo de nuevo en un minuto.
test_email Escribe un correo electrónico al que enviar la prueba.
token_embed_only Una clave del panel solo abre el panel dentro de un CMS.
token_manage_only Un token de gestión solo cambia los ajustes de su propio sitio.
token_name Ponle un nombre al token.
token_read_only Los tokens de API solo pueden leer.
token_refused host {host} rechazó el token. Vuelve a conectarlo desde los ajustes del sitio.
token_site Un token que cambia ajustes es para un solo sitio. Elige el sitio.
token_unset Define RUNLIGHT_TOKEN, o pasa token o authorize a routes(). Sin eso, Runlight solo queda abierto cuando NODE_ENV es development.
too_many_tries Demasiados intentos. Espera quince minutos y vuelve a intentarlo.
twofactor_off Activa primero el inicio de sesión en dos pasos.
twofactor_restart Demasiados códigos incorrectos. Vuelve a empezar a activar el inicio de sesión en dos pasos.
twofactor_self Desactiva tu propio inicio de sesión en dos pasos en Cuenta.
unauthorized Inicia sesión o envía un token para ver esto.
unknown_account Esa cuenta ya no existe.
unknown_dimension dimension Runlight no conoce el desglose "{dimension}".
unknown_domain Ese dominio no es de este sitio.
unknown_funnel Ese embudo ya no existe.
unknown_goal Ese objetivo ya no existe.
unknown_invite Esa invitación ya no existe.
unknown_link Ese enlace ya no existe.
unknown_report Ese informe ya no existe.
unknown_share Ese enlace para compartir ya no existe.
unknown_site Ese sitio no está aquí.
unknown_timezone timezone Runlight no conoce la zona horaria "{timezone}".
unknown_token Ese token ya no existe.
unreachable host No se pudo contactar con {host}.