Référence
API HTTP
Tout ce que montre le tableau de bord est disponible en JSON sous /runlight/api, pour vos propres scripts et outils.
Le tableau de bord est construit sur cette API, donc tout ce qu’il vous montre, vous pouvez le récupérer vous-même. Envoyez un jeton comme bearer token.
bash
curl https://example.com/runlight/api/stats?period=30d -H "Authorization: Bearer $RUNLIGHT_TOKEN"Pour les scripts, créez un jeton en lecture seule dans Réglages, API et IA, et gardez RUNLIGHT_TOKEN pour vous. Un jeton en lecture seule peut lire tous les rapports ci-dessous, y compris les liens courts et les clics de chacun, et il ne modifie jamais rien. Vous pouvez le limiter à un site, et il cesse de fonctionner dès que vous le supprimez. Les endpoints qui modifient quelque chose acceptent RUNLIGHT_TOKEN, un propriétaire, un administrateur ou un membre connecté, votre vérification authorize, ou un jeton manage pour son unique site. Un membre peut tout modifier sauf le service d’e-mail, les réglages de l’assistant et la suppression d’un site. Les mêmes jetons connectent les assistants IA, comme l’explique Interrogez votre IA.
Un jeton manage appartient à un serveur autonome qui affiche ce site. Il lit tout ce que lit un jeton en lecture seule et peut aussi modifier les objectifs, les entonnoirs, les liens courts, les domaines de liens, les rapports par e-mail et les liens de partage d’un site, ainsi que son nom, son fuseau horaire et sa durée de conservation, et obtenir des tickets pour le sélecteur d’éléments. Il ne peut jamais toucher aux autres sites, aux personnes, aux jetons, aux imports ni au service d’e-mail, et il ne peut pas changer l’endroit où vit le site. Il voit quel service d’e-mail envoie les rapports et depuis quelle adresse, mais les clés et les détails du compte de ce service lui restent cachés. Il n’ajoute des domaines de liens et des rapports par e-mail que si l’installation connaît sa propre adresse, via origin dans routes() ou RUNLIGHT_URL sur le serveur autonome. Le serveur autonome en obtient un via OAuth quand vous connectez le site, vous en créerez donc rarement un à la main.
Un jeton embed appartient à une extension WordPress, Drupal ou Craft qui affiche le tableau de bord d’un site dans l’administration du CMS. Partout ailleurs, il répond 403 avec token_embed_only. Son seul usage est POST /api/embed, qui crée un ticket pour un seul chargement du tableau de bord dans un cadre. Quiconque le détient peut donc lire le tableau de bord de ce site. Créez-en un dans Réglages, Installation, sous Clé du tableau de bord, ou avec POST /api/tokens.
Le bouton Connect d’une extension de CMS obtient sa clé du tableau de bord via OAuth avec le scope cms. La page de consentement propose les sites qui comptent le domaine de l’extension, ou le seul site quand celui-ci ne liste aucun domaine et compte donc n’importe lequel, ou un nouveau site quand les sites sont gérés dans le tableau de bord. La réponse à la demande de jeton contient la clé du tableau de bord dans access_token, l’identifiant du site dans site et sa clé des agents dans agents_key.
Les requêtes qui modifient quelque chose doivent envoyer content-type: application/json.
Lire les rapports
Chaque rapport accepte les mêmes paramètres de requête.
| Paramètre | Valeurs |
|---|---|
site |
L’identifiant du site, par défaut le premier site. |
period |
today, yesterday, 7d, 30d, 90d, month, last_month, year, 12mo ou all. |
from, to |
Des dates au format YYYY-MM-DD, toutes deux incluses, à la place d’une période. |
compare |
previous (par défaut), year, custom ou off. |
compare_from, compare_to |
Les dates de comparaison, pour compare=custom. |
filter |
dimension:op:value, où op vaut is, not ou contains. Répétez-le pour en appliquer jusqu’à six. |
interval |
hour, day, week ou month pour les séries, choisi d’après la période par défaut. |
| Endpoint | Renvoie |
|---|---|
GET /api |
Le nom, la version et la version d’API de l’installation, sans jeton. |
GET /api/sites |
Tous les sites, avec la date de leur dernière visite. |
GET /api/stats |
Les visiteurs, les visites, les pages vues, les pages par visite, le taux de rebond et la durée de visite, avec ceux de la période de comparaison. |
GET /api/series |
Les mêmes chiffres pour chaque heure, jour, semaine ou mois de la période. |
GET /api/breakdown?dimension= |
Les lignes d’une dimension, avec limit (jusqu’à 1000) et page. |
GET /api/rhythm |
Les visites par jour de la semaine et par heure. |
GET /api/realtime |
Les personnes, les pages, les sources et les pays des 5 dernières minutes, avec les pages vues par minute et l’activité récente sur les 30 dernières. |
GET /api/goals |
Chaque objectif avec ses conversions, ses visiteurs convertis, son taux et ses revenus. |
GET /api/goals/:id |
Un objectif avec une série et ses conversions par canal, source et page. |
GET /api/funnels |
Chaque entonnoir avec le nombre de visites qui ont atteint chaque étape, dans l’ordre, au cours d’une même visite. |
GET /api/event-props?event= |
Les noms de propriétés envoyés avec un événement, et les valeurs de l’une d’elles, choisie avec key (la première par défaut) et limit (jusqu’à 1000). |
GET /api/export |
Un ZIP de fichiers CSV pour la vue, avec les chiffres, les séries et chaque répartition, qui accepte les mêmes paramètres que les rapports. |
GET /api/journeys |
Les chemins que suivent les visites, avec les pages principales à chaque étape, les flux entre les étapes et les chemins les plus fréquents. Il accepte steps (de 2 à 8), des pages start et end, et through sous la forme step:page pour suivre une page. |
GET /api/links |
Les liens courts avec leurs clics. |
GET /api/links/:id |
Les clics d’un lien au fil du temps, ses sources, ses pays, ses appareils et ses navigateurs. |
GET /api/icon |
L’icône du site sous forme d’image, récupérée sur le propre domaine du site, ou une 404 quand il n’en a pas. Les liens de partage peuvent aussi la lire. |
Un lien de partage et le tableau de bord intégré dans un CMS lisent sans jeton les rapports du tableau ci-dessus, sauf GET /api/links et GET /api/links/:id, pour le seul site qu’ils affichent. La page d’un lien de partage envoie x-runlight-share avec son identifiant. La page du tableau de bord intégré envoie x-runlight-embed avec la session ouverte par son ticket, qui dure une heure et se termine aussitôt quand son jeton est supprimé. Une fois la session expirée, les lectures répondent 401 avec embed_expired. Une requête qui porte x-runlight-embed n’obtient rien de plus, quoi qu’elle envoie d’autre, et toute autre requête qui le porte répond 403 avec share_not_available.
breakdown et filter acceptent les dimensions 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 et language. breakdown accepte aussi ai_agent et ai_page.
Modifier des choses
| Endpoint | Action |
|---|---|
PATCH /api/sites/:id |
Modifie le name, la timezone ou la retentionMonths d’un site (6, 12, 24, 36 ou 60, ou null pour tout garder). Sur le serveur autonome, aussi les hostnames. |
POST /api/sites |
Ajoute un site, quand les sites sont gérés dans le tableau de bord comme sur le serveur autonome, à partir de { "name", "hostnames", "timezone" }. Pour connecter plutôt une autre installation, envoyez { "remote": { "url", "token" } }. |
DELETE /api/sites/:id |
Supprime un site géré et tout ce qui a été enregistré pour lui, ou déconnecte un site connecté. |
POST /api/sites/connect |
Commence à connecter une autre installation via sa page de consentement, à partir de { "url" }. Il répond avec authorize, l’adresse vers laquelle envoyer le propriétaire. Ajoutez site avec l’identifiant d’un site de l’installation pour proposer celui-là en premier. |
GET /api/sites/connect/done |
L’adresse où la page de consentement renvoie le propriétaire. Il termine la connexion et ouvre le tableau de bord sur le site. |
POST /api/goals, PATCH /api/goals/:id, DELETE /api/goals/:id |
Ajoute, modifie ou retire un objectif. |
POST /api/pick |
Crée un ticket pour le sélecteur d’éléments à partir de { "origin" }, l’origine du tableau de bord lui-même, à laquelle le sélecteur envoie son choix et nulle part ailleurs. Le ticket désigne aussi le site, et le sélecteur ne fait rien sur les pages d’un autre site. Un ticket est valable une demi-heure. Quiconque peut modifier des choses peut en demander un, tout comme un jeton de gestion pour son site, dont les tickets ne désignent jamais que le hub depuis lequel il s’est connecté. |
POST /api/funnels, PATCH /api/funnels/:id, DELETE /api/funnels/:id |
Ajoute, modifie ou retire un entonnoir, envoyé sous la forme { "name", "steps" } avec deux à huit étapes { "kind", "match" }, où kind vaut page ou event. |
POST /api/links, PATCH /api/links/:id, DELETE /api/links/:id |
Ajoute, modifie ou retire un lien court. |
POST /api/links/import |
Ajoute de nombreux liens courts d’un coup à partir de { "rows" }, jusqu’à 5 000 objets avec url et, si vous voulez, slug, name et domain. Il répond avec le nombre de liens créés et les lignes qui ont échoué. |
POST /api/links/import/:source |
Une étape d’un import depuis umami, dub, bitly, shortio ou rebrandly, envoyée sous la forme { "credentials", "cursor", "done" }. Renvoyez le cursor de la réponse jusqu’à ce qu’il revienne à null. Les identifiants sont utilisés et jamais conservés. |
POST /api/import/umami/websites |
Liste les sites d’un compte Umami, à partir de { "credentials" }. |
POST /api/import/umami/visits |
Une étape de la reprise de l’historique de visites d’un site Umami, à partir de { "credentials", "website", "cursor" }, répétée jusqu’à ce que cursor vaille null. |
POST /api/import/csv/visits |
Écrit jusqu’à 2 000 lignes d’un CSV de visites, envoyées sous la forme { "rows": [...] } où chaque ligne est un objet de ses colonnes, et répond { "pageviews", "events", "visits", "skipped" }. Envoyez les lignes de la plus ancienne à la plus récente, sans répartir un même moment sur deux requêtes, car chaque requête remplace ce qu’un import précédent a écrit sur sa plage de temps. |
GET, POST /api/link-domains, DELETE /api/link-domains/:domain |
Liste, ajoute ou retire des domaines de liens personnalisés. Un domaine de liens doit être un nom public, et jamais celui du tableau de bord ni celui d’un site. |
GET /api/link-domains/:domain/check |
Indique si les requêtes vers un domaine de liens atteignent Runlight, sous la forme { "domain", "working", "reason", "code", "target" }, où reason dit ce qui a répondu à la place, code le nomme, et target donne le host vers lequel un enregistrement CNAME doit pointer et les addresses publiques qu’un enregistrement A ou AAAA doit utiliser. |
GET, POST /api/shares, PATCH, DELETE /api/shares/:id |
Liste, ajoute, renomme ou retire des liens de partage. |
GET, PUT, DELETE /api/mail, POST /api/mail/test |
Lit, définit, retire ou teste le service d’e-mail. Les clés ne sont jamais renvoyées. GET répond aussi source (code, dashboard, app ou null) et services, les services que proposent les Réglages. Quand l’application passe son propre système d’envoi, il contient aussi app, avec via, from, fromName et replaced, qui vaut true tant qu’un service enregistré envoie à sa place. |
GET, POST /api/reports, DELETE /api/reports/:id, POST /api/reports/:id/send |
Liste, ajoute ou retire des destinataires de rapports, ou envoie un exemple. |
GET ou POST /api/check |
Lance la vérification planifiée. |
POST /api/observe |
Enregistre une page servie à un agent IA, envoyée sous la forme { "url", "userAgent", "at" }, où at est le moment où elle a été servie (au cours de la dernière semaine, en millisecondes epoch ou en date ISO) et peut être omis. Envoyez-en jusqu’à 500 d’un coup sous la forme { "fetches": [...] }. Il accepte le jeton, la clé des agents du site ou l’observeKey de toute l’installation, et ce sont les extensions de CMS et le lecteur de journaux qui l’appellent. Une seule requête répond 204 sans corps, et un lot répond { "recorded", "skipped" } avec le nombre de requêtes enregistrées et le nombre laissé de côté. |
GET /api/tokens |
Liste les jetons d’API avec le nom, le site, le scope et les quatre derniers caractères de chacun, et la date de sa dernière utilisation. Les jetons eux-mêmes ne sont jamais renvoyés. |
POST /api/tokens |
Crée un jeton à partir de { "name", "site", "scope" } et le renvoie une seule fois dans secret. Laissez site vide pour tous les sites. scope vaut read (par défaut), manage ou embed, et les deux derniers demandent un site. |
POST /api/embed |
Crée un ticket qui ouvre une fois le tableau de bord du site dans un cadre, à partir de { "origin" }, l’origine de la page d’administration qui l’encadre, comme https://example.com. Seul un jeton embed peut le demander, et l’hôte de l’origine, sans www., doit être l’un des domaines de son site. Il répond 201 avec { "ticket", "site", "expiresAt", "path" }, où path vaut /runlight/embed?ticket=…. Un ticket ne sert qu’une fois, dans les cinq minutes. |
GET /embed?ticket= |
Le tableau de bord pour un cadre, en dehors de /api. Avec un ticket ni utilisé ni expiré, il répond 200 avec une page que seule l’origine du ticket peut encadrer (frame-ancestors dans sa CSP, et pas de X-Frame-Options) et qui garde en mémoire une session d’une heure, sans cookie. Un ticket déjà utilisé ou expiré répond 410 avec une page qui l’indique et demande à la page d’administration de se recharger, encadrée par la même origine. Tout le reste répond 404 avec une page simple que rien ne peut encadrer. Ajoutez theme=light ou theme=dark pour suivre l’administration qui l’entoure, jusqu’à ce que quelqu’un choisisse un thème dans le cadre. |
GET /api/observe-key, POST /api/observe-key/new |
Lit la clé des agents d’un site pour les extensions de CMS, créée la première fois qu’on la demande, ou la remplace par une nouvelle, ce qui arrête aussitôt l’ancienne. |
GET /api/token |
Indique ce que peut faire le jeton envoyé avec la requête, sous la forme { "scope", "site" }. Un hub le demande avant de proposer de modifier quoi que ce soit. |
DELETE /api/token |
Supprime le jeton envoyé avec la requête. Un hub le fait quand il déconnecte un site ou reçoit un nouveau jeton. |
DELETE /api/tokens/:id |
Supprime un jeton, qui cesse aussitôt de fonctionner. |
GET, PUT, DELETE /api/assistant |
Lit, définit ou retire les { "provider", "model", "baseUrl", "key" } de l’assistant du tableau de bord. La clé n’est jamais renvoyée. Réservé au propriétaire et aux administrateurs, mais toute personne au tableau de bord peut demander s’il est configuré. |
POST /api/assistant/models |
Les modèles que propose un fournisseur, à partir de { "provider", "baseUrl", "key" }, pour le formulaire des réglages. Omettez key pour utiliser celle qui est enregistrée, ce qui ne fonctionne que pour le même fournisseur et la même adresse. Réservé au propriétaire et aux administrateurs. |
POST /api/assistant/chat |
Interroge l’assistant en envoyant { "site", "messages", "view", "language" }, où les messages sont des paires { "role", "content" } qui se terminent par une question. Il répond { "reply", "tools" }. Réservé aux personnes connectées au tableau de bord, jamais aux jetons d’API ni aux liens de partage. Chaque personne peut poser trente questions par heure et deux à la fois, et chaque lecteur le nombre quotidien fixé par le propriétaire, avec une 429 au-delà de l’une ou l’autre limite. |
PUT /api/assistant/limits |
Fixe le nombre de questions que chaque lecteur peut poser par jour, à partir de { "viewerDaily" }, un nombre entier de 0 à 1 000. Il vaut 50 au départ, et GET /api/assistant l’affiche au propriétaire et aux administrateurs. Réservé au propriétaire et aux administrateurs. |
GET /api/account |
Le compte de la personne connectée, sous la forme { "account" }. Toute personne connectée, lecteurs compris. |
POST /api/account/password |
Change votre propre mot de passe, à partir de { "current", "next" }. Toutes les autres connexions prennent fin, et ce navigateur reçoit une nouvelle session. |
POST /api/account/2fa/start, /confirm, /recovery, /disable |
Active la connexion à deux facteurs, la confirme avec le premier { "code" } de l’application, crée de nouveaux codes de récupération ou la désactive. start répond { "secret", "uri" } pour l’application d’authentification, et confirm et recovery répondent { "recovery" } avec les codes. Tous sauf confirm demandent votre { "password" }. |
GET, POST /api/people |
Liste toutes les personnes qui ont un compte et les invitations en cours, sous la forme { "people", "invites" }, ou invite quelqu’un à partir de { "email", "role" }, où role vaut admin, member ou viewer. Une invitation répond 201 avec { "invite", "link", "emailed" }, et son lien est valable sept jours. Réservé au propriétaire et aux administrateurs. |
PATCH, DELETE /api/people/:id |
Change le { "role" } de quelqu’un, ou le retire avec les jetons qu’il a créés. Une personne devenue lecteur perd aussi ses jetons. Seul le propriétaire peut modifier ou retirer le propriétaire, et personne ne peut se retirer soi-même. Réservé au propriétaire et aux administrateurs. |
DELETE /api/people/:id/2fa |
Désactive la connexion à deux facteurs de quelqu’un d’autre, pour une personne qui a perdu à la fois son téléphone et ses codes de récupération, à partir de votre propre { "password" }. Jamais celle du propriétaire. Réservé au propriétaire et aux administrateurs. |
POST /api/people/:id/owner |
Transmet la propriété à un administrateur, à partir de votre { "password" }, et fait de vous un administrateur. Réservé au propriétaire. |
DELETE /api/invites/:id, POST /api/invites/:id/resend |
Annule une invitation, ou l’envoie de nouveau avec un nouveau lien qui arrête l’ancien. Réservé au propriétaire et aux administrateurs. |
POST /mcp |
Le serveur MCP pour les assistants IA, décrit dans Interrogez votre IA. |
Les endpoints du compte et des personnes existent quand les comptes sont activés, comme sur le serveur autonome. Ils ne répondent qu’à une personne connectée au tableau de bord, jamais à un jeton, et répondent 401 avec sign_in à tous les autres.
Erreurs
Les erreurs sont en JSON, { "error", "code", "params" }. error dit ce qui s’est mal passé en anglais courant, code le nomme, et params, quand il y en a, remplissent les variables du message. Le tableau de bord affiche chaque code dans sa propre langue, et un script peut s’appuyer sur le code, là où le texte anglais peut changer.
| Statut | Quand |
|---|---|
| 400 | Quelque chose dans la requête est incorrect ou manquant. |
| 401 | Le jeton est absent ou inconnu de cette installation. |
| 403 | Un lecteur ou un jeton d’API tente une modification qui ne lui est pas permise. |
| 404 | Ce que la requête désigne n’existe pas. |
| 409 | Un nom est déjà pris, comme un domaine de liens qu’a un autre site. |
| 413 | Plus de 500 requêtes d’un coup vers POST /api/observe. |
| 415 | Une écriture qui n’est pas en application/json. |
| 429 | Trop de demandes en peu de temps, comme des tentatives de connexion, des exemples, des questions à l’assistant ou des enregistrements OAuth depuis une même adresse. |
| 500 | Une erreur s’est produite sur le serveur. |
| 502 | Une installation connectée était injoignable, a répondu par une redirection ou a refusé le jeton, ou le service d’IA a échoué. |
| 503 | Aucun jeton n’est défini en dehors du développement. |
| 504 | Une installation connectée a mis trop de temps à répondre. |
Voici les codes et les params que chacun remplit. Une erreur qu’une installation connectée transmet via un hub garde son code et ses params, et son error commence par l’hôte de l’installation. La vérification d’un domaine de liens donne sa reason avec un code check_ de la même façon. La dernière colonne donne le texte que le tableau de bord affiche en français pour chaque code. L’API elle-même envoie ce texte en anglais, dans son champ error.
| Code | Params | Ce qu’il dit |
|---|---|---|
account_exists |
email |
{email} a déjà un compte. |
address_refused |
host |
{host} est une adresse link-local ou de métadonnées cloud, à laquelle Runlight ne se connecte jamais. |
admin_only |
Seul le propriétaire ou un administrateur peut modifier ceci. | |
assistant_address |
Saisissez l’adresse du service dans Réglages, Assistant IA. | |
assistant_address_bad |
Saisissez l’adresse du service, en commençant par https:// | |
assistant_cancelled |
La question a été annulée. | |
assistant_daily |
limit |
Les lecteurs peuvent poser {limit} questions par jour. Réessayez demain. |
assistant_dashboard |
Seul le tableau de bord peut utiliser l’assistant. | |
assistant_failed |
detail |
Le service d’IA n’a pas répondu comme prévu ({detail}). |
assistant_invalid |
detail |
L’assistant n’a pas été enregistré ({detail}). |
assistant_key |
provider |
Saisissez votre clé {provider}. |
assistant_limit |
Utilisez un nombre entier de 0 à 1 000. | |
assistant_model |
Saisissez un modèle dans Réglages, Assistant IA. | |
assistant_no_models |
host |
{host} n’a listé aucun modèle. Saisissez plutôt le nom du modèle. |
assistant_provider |
Choisissez un service d’IA dans Réglages, Assistant IA. | |
assistant_refused |
detail, host |
{host} a refusé la demande ({detail}). |
assistant_slow |
Cette question a pris trop de temps. Essayez une question plus précise. | |
assistant_soon |
Vous avez posé beaucoup de questions en peu de temps. Patientez un peu, puis réessayez. | |
assistant_status |
host, status |
{host} a répondu {status}. |
assistant_steps |
L’assistant a eu besoin de trop d’étapes pour cette question. Essayez une question plus précise. | |
assistant_timeout |
host |
{host} a mis trop de temps à répondre. |
assistant_unset |
L’assistant n’est pas encore configuré. Un propriétaire peut le faire dans Réglages, Assistant IA. | |
busy |
Runlight vérifie d’autres connexions. Réessayez dans un instant. | |
check_https |
il est injoignable en HTTPS | |
check_not_public |
ce n’est pas un nom de domaine public | |
check_not_runlight |
quelque chose a répondu, mais pas Runlight | |
check_status |
status |
il a répondu {status} |
check_timeout |
il a mis trop de temps à répondre | |
code_wrong |
Ce code n’est pas correct. Vérifiez l’heure de votre téléphone et essayez le suivant. | |
compare_bad |
compare |
Runlight ne connaît pas la comparaison « {compare} ». |
compare_range_bad |
Choisissez les deux dates de comparaison. | |
connect_again |
Connectez à nouveau ce site pour le modifier d’ici. | |
connect_denied |
La connexion n’a pas été autorisée. | |
connect_endpoints |
url |
{url} a indiqué des points d’accès sur une autre adresse. |
connect_expired |
Cette connexion a pris trop de temps ou a déjà servi. Recommencez. | |
connect_failed |
detail |
La connexion n’a pas commencé ({detail}). |
connect_not_runlight |
url |
{url} n’a pas répondu comme une installation Runlight. |
connect_old |
url |
{url} utilise une ancienne version de Runlight. Mettez-la à jour, ou connectez-la avec un jeton d’API de ses réglages. |
connect_refused |
L’installation n’a pas laissé ce serveur se connecter. Recommencez, ou connectez-la avec un jeton d’API. | |
connect_register |
reason, url |
{url} n’a pas laissé ce serveur se connecter. {reason} |
connect_token |
L’installation n’a pas donné de jeton à ce serveur. Recommencez. | |
connect_url |
Saisissez l’adresse de l’installation, par exemple https://example.com/runlight | |
domain_in_use |
domain |
{domain} héberge ce tableau de bord ou l’un de vos sites. Utilisez un domaine ou un sous-domaine à part pour les liens courts, comme go.{domain}. |
domain_invalid |
Ce n’est pas un nom de domaine. | |
domain_not_public |
domain |
{domain} n’est pas un nom de domaine public. Utilisez un domaine accessible depuis n’importe quel navigateur. |
domain_taken |
domain |
{domain} appartient déjà à un autre site. |
email_invalid |
Saisissez une adresse e-mail. | |
embed_expired |
Ce tableau de bord a expiré. Rechargez la page pour l’ouvrir à nouveau. | |
embed_host |
host |
{host} ne fait pas partie des domaines de ce site. Ajoutez-le aux domaines du site, dans Réglages, Général, ou dans le code quand les sites y sont définis. |
embed_origin |
Envoyez l’origine de la page d’administration, par exemple https://example.com | |
embed_site |
Une clé du tableau de bord vaut pour un seul site. Choisissez le site. | |
embed_token |
Utilisez la clé du tableau de bord du site, créée dans Réglages, Installation, sous WordPress, Drupal et Craft. | |
event_needed |
Nommez l’événement. | |
filter_bad |
filter |
Runlight ne sait pas lire le filtre « {filter} ». |
filters_max |
max |
Utilisez au plus {max} filtres à la fois. |
funnel_exists |
name |
Il existe déjà un entonnoir nommé « {name} ». |
funnel_invalid |
detail |
L’entonnoir n’a pas été enregistré ({detail}). |
funnel_long |
Un entonnoir a au plus huit étapes. | |
funnel_name |
Donnez un nom à l’entonnoir. | |
funnel_page_bad |
match |
« {match} » n’est ni un chemin ni une URL. |
funnel_short |
Un entonnoir a besoin d’au moins deux étapes. | |
goal_amount |
Saisissez un montant, par exemple 49 ou 9,99. | |
goal_click_taken |
match |
L’objectif de clic « {match} » envoie déjà des événements portant ce nom. |
goal_currency |
Utilisez un code de devise à trois lettres, comme USD ou EUR. | |
goal_event |
Saisissez le nom de l’événement. | |
goal_event_taken |
name |
Un objectif d’événement compte déjà les événements « {name} », alors donnez un autre nom à cet objectif de clic. |
goal_exists |
name |
Il existe déjà un objectif nommé « {name} ». |
goal_invalid |
detail |
L’objectif n’a pas été enregistré ({detail}). |
goal_kind |
Choisissez ce que compte l’objectif, un événement, une visite de page ou un clic. | |
goal_link |
Saisissez l’adresse du lien, par exemple https://buy.stripe.com/* | |
goal_name |
Donnez un nom à l’objectif. | |
goal_page |
Saisissez un chemin de page, par exemple /merci ou /blog/* | |
goal_page_bad |
Cette page n’est ni un chemin ni une URL. | |
goal_prop_kind |
Seul un objectif d’événement peut prendre son montant dans l’événement. Utilisez plutôt un montant fixe. | |
goal_prop_name |
Un nom de propriété utilise des lettres, des chiffres, des points, des tirets et des tirets bas. | |
goal_selector |
Saisissez un sélecteur CSS, par exemple #signup ou .buy-button | |
hub_domains |
Un hub connecté ne peut pas changer les domaines d’un site. | |
icon_none |
Ce site n’a pas d’icône. | |
import_csv_batch |
max |
Envoyez au plus {max} lignes à la fois. |
import_csv_format |
Ce fichier n’est ni un export Umami ni au format de visites de Runlight. Vérifiez sa ligne d’en-tête. | |
import_day_full |
limit |
Un jour compte plus de {limit} événements, plus qu’une étape d’import ne peut en lire. |
import_failed |
detail |
L’import s’est arrêté ({detail}). |
import_key |
service |
Saisissez votre clé {service}. |
import_refused |
La clé ou la connexion a été refusée. | |
import_slug_bad |
slug |
/{slug} contient des caractères qu’un slug Runlight ne peut pas utiliser. |
import_slug_taken |
name, slug |
/{slug} est déjà utilisé par « {name} ». |
import_source |
source |
Runlight ne peut pas importer depuis {source}. |
import_status |
host, status |
{host} a répondu {status}. |
import_umami_address |
Saisissez l’adresse de votre Umami, par exemple https://stats.example.com | |
import_umami_login |
Saisissez une clé d’API, ou un nom d’utilisateur et un mot de passe. | |
import_website |
Choisissez le site Umami à importer. | |
install_refused |
Cette installation a refusé le jeton. | |
install_token |
Saisissez un jeton d’API de cette installation. | |
internal |
Une erreur s’est produite sur le serveur. Réessayez. | |
invite_gone |
Cette invitation a expiré ou a déjà servi. Demandez-en une nouvelle. | |
link_domain |
domain |
Ajoutez d’abord {domain} comme domaine de liens dans les réglages. |
link_long |
La destination dépasse 2 000 caractères. | |
link_no_slug |
Aucun slug libre n’a été trouvé. Réessayez. | |
link_protocol |
La destination doit commencer par http:// ou https:// | |
link_slug |
Un slug se compose de lettres, de chiffres, de tirets et de tirets bas, 100 au plus. | |
link_taken |
slug |
/{slug} est déjà pris. |
link_url |
La destination doit être une URL complète, commençant par https:// | |
mail_app_failed |
detail, via |
{via} n’a pas pu envoyer l’e-mail ({detail}). |
mail_failed |
detail |
L’e-mail n’a pas pu être envoyé ({detail}). |
mail_field |
field |
Le champ {field} est requis. |
mail_from |
Saisissez l’adresse d’expédition des rapports, comme reports@example.com. | |
mail_https |
L’URL du webhook doit utiliser https. | |
mail_in_code |
Le service d’e-mail est défini dans le code, il ne peut donc pas être modifié ici. | |
mail_option |
field, options |
{field} doit être l’une de ces valeurs ({options}). |
mail_port |
Le port doit être un nombre entier de 1 à 65535. | |
mail_refused |
detail, host |
{host} a refusé l’e-mail ({detail}). |
mail_region |
Ce n’est pas une région AWS, comme us-east-1. | |
mail_service |
service |
Choisissez un service d’e-mail proposé ici. service est envoyé quand le service demandé n’est pas proposé. |
mail_slow |
host |
{host} a mis trop de temps à répondre, l’e-mail n’a donc pas été envoyé. |
mail_unreachable |
host |
Impossible de joindre {host}. |
mail_unset |
Configurez d’abord un service d’e-mail. | |
mail_url |
Saisissez l’URL complète du webhook, par exemple https://example.com/hooks/mail. | |
method_not_allowed |
Ce n’est pas possible ici. | |
not_found |
Ce n’est pas ici. | |
observe_many |
Envoyez au plus 500 requêtes à la fois. | |
observe_url |
Envoyez l’adresse de la page. | |
origin_needed |
Indiquez d’abord l’adresse de ce Runlight (RUNLIGHT_URL sur le serveur, ou origin dans routes()) pour qu’un hub connecté puisse ajouter des domaines de liens et des rapports par e-mail. | |
owner_hand_over |
Seul le propriétaire peut transmettre la propriété. | |
owner_needs_admin |
Rendez-le d’abord administrateur. | |
owner_only |
Seul un propriétaire peut modifier ceci. | |
owner_protected |
Personne d’autre que le propriétaire ne peut modifier ou retirer le propriétaire. | |
password_current_wrong |
Votre mot de passe actuel n’est pas correct. | |
password_short |
min |
Utilisez un mot de passe d’au moins {min} caractères. |
password_wrong |
Votre mot de passe n’est pas correct. | |
people_owner |
Seul le propriétaire ou un administrateur peut gérer les personnes. | |
pick_hub |
L’adresse de ce hub n’est pas celle depuis laquelle il s’est connecté. Connectez à nouveau le site depuis ici. | |
pick_origin |
Envoyez l’origine du tableau de bord, par exemple https://stats.example.com | |
pick_return |
Envoyez l’adresse du tableau de bord suivie de /pick-return, sur son origine, et un nonce de 32 chiffres hexadécimaux | |
property_bad |
Runlight ne sait pas lire ce nom de propriété. | |
question_needed |
Posez une question. | |
range_bad |
Ces dates ne forment pas une période que Runlight sait lire. | |
redirected |
host |
{host} a répondu par une redirection. |
remote_slow |
host |
{host} a mis trop de temps à répondre. Essayez une période plus courte. |
remove_self |
Vous ne pouvez pas vous retirer vous-même. | |
report_exists |
email |
{email} reçoit déjà ce rapport. |
report_limit |
Un site peut envoyer à 50 adresses au plus. | |
retention_bad |
months |
Conservez les visites {months} mois, ou pour toujours. |
role_needed |
Choisissez administrateur, membre ou lecteur. | |
rows_needed |
Envoyez les liens sous forme de liste de lignes. | |
sample_soon |
Un exemple vient de partir. Patientez une minute et réessayez. | |
sample_soon_hub |
Un hub connecté peut envoyer un exemple toutes les dix minutes. Patientez quelques minutes et réessayez. | |
send_json |
Envoyez ceci en JSON. | |
send_object |
Envoyez un objet JSON. | |
share_gone |
Ce lien de partage ne fonctionne plus. | |
share_not_available |
Ce n’est pas disponible sur un tableau de bord partagé. | |
sign_in |
Connectez-vous d’abord. | |
site_domain_invalid |
host |
« {host} » n’est pas un nom de domaine. |
site_domain_needed |
Ajoutez le domaine du site, par exemple example.com | |
site_domain_taken |
host, site |
{host} appartient déjà à {site}. |
site_invalid |
detail |
Le site n’a pas été enregistré ({detail}). |
site_name |
Un nom de site fait de 1 à 80 caractères. | |
site_remote |
Ce site est compté par son propre Runlight. Connectez-le à nouveau depuis ses réglages pour le modifier d’ici. | |
sites_in_code |
Les sites sont définis dans le code ici, alors ils se modifient là. | |
smtp_starttls |
Le serveur SMTP ne propose pas STARTTLS. Choisissez TLS ou aucune pour la sécurité. | |
tables_busy |
Runlight crée ou met à jour ses tables. Réessayez dans une minute. | |
test_email |
Saisissez l’adresse e-mail à laquelle envoyer le test. | |
token_embed_only |
Une clé du tableau de bord ouvre seulement le tableau de bord dans un CMS. | |
token_manage_only |
Un jeton de gestion ne modifie que les réglages de son propre site. | |
token_name |
Nommez le jeton. | |
token_read_only |
Les jetons d’API ne peuvent que lire. | |
token_refused |
host |
{host} a refusé le jeton. Connectez-le de nouveau depuis les réglages du site. |
token_site |
Un jeton qui modifie les réglages est pour un seul site. Choisissez le site. | |
token_unset |
Définissez RUNLIGHT_TOKEN, ou passez token ou authorize à routes(). Sans cela, Runlight n’est ouvert que lorsque NODE_ENV vaut development. | |
too_many_tries |
Trop de tentatives. Patientez quinze minutes et réessayez. | |
twofactor_off |
Activez d’abord la connexion à deux facteurs. | |
twofactor_restart |
Trop de codes erronés. Recommencez l’activation de la connexion à deux facteurs. | |
twofactor_self |
Désactivez votre propre connexion à deux facteurs dans Compte. | |
unauthorized |
Connectez-vous ou envoyez un jeton pour voir ceci. | |
unknown_account |
Ce compte n’existe plus. | |
unknown_dimension |
dimension |
Runlight ne connaît pas la répartition « {dimension} ». |
unknown_domain |
Ce domaine n’appartient pas à ce site. | |
unknown_funnel |
Cet entonnoir n’existe plus. | |
unknown_goal |
Cet objectif n’existe plus. | |
unknown_invite |
Cette invitation n’existe plus. | |
unknown_link |
Ce lien n’existe plus. | |
unknown_report |
Ce rapport n’existe plus. | |
unknown_share |
Ce lien de partage n’existe plus. | |
unknown_site |
Ce site n’est pas ici. | |
unknown_timezone |
timezone |
Runlight ne connaît pas le fuseau horaire « {timezone} ». |
unknown_token |
Ce jeton n’existe plus. | |
unreachable |
host |
Impossible de joindre {host}. |