Gesamte Doku

Start

  1. 01Erste Schritte
  2. 02Installation
  3. 03Tracking

Funktionen

  1. 04Das Dashboard
  2. 05Ziele
  3. 06Kurzlinks
  4. 07KI-Quellen und Agenten
  5. 08E-Mail-Berichte
  6. 09Stündlicher Check
  7. 10Frag deine KI

Referenz

  1. 11Konfiguration
  2. 12HTTP-API

Plattformen

  1. 13Eigenständiger Server
  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

Vertrauen

  1. 26Datenschutz

Referenz

HTTP-API

Alles, was das Dashboard zeigt, gibt es als JSON unter /runlight/api, für deine eigenen Skripte und Tools.

Das Dashboard baut auf dieser API auf, alles, was es dir zeigt, kannst du also selbst abrufen. Sende ein Token als Bearer.

bash

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

Erstelle für Skripte ein Lese-Token unter Einstellungen, API und KI und behalte RUNLIGHT_TOKEN für dich. Ein Lese-Token kann jeden Bericht unten lesen, einschließlich der Kurzlinks und ihrer Klicks, und ändert nie etwas. Du kannst es auf eine Website beschränken, und es funktioniert nicht mehr, sobald du es löschst. Endpunkte, die etwas ändern, nehmen RUNLIGHT_TOKEN, einen angemeldeten Eigentümer, Admin oder ein angemeldetes Mitglied, deine authorize-Prüfung oder ein manage-Token für seine eine Website an. Ein Mitglied kann alles ändern außer dem E-Mail-Dienst, den Einstellungen des Assistenten und dem Löschen einer Website. Dieselben Tokens verbinden KI-Assistenten, wie Frag deine KI erklärt.

Ein manage-Token gehört zu einem eigenständigen Server, der diese Website anzeigt. Es liest wie ein Lese-Token und kann außerdem die Ziele, Trichter, Kurzlinks, Link-Domains, E-Mail-Berichte und Freigabelinks einer Website ändern, dazu ihren Namen, ihre Zeitzone und ihre Aufbewahrungsdauer, und Tickets für die Elementauswahl holen. Es kann nie andere Websites, Personen, Tokens, Importe oder den E-Mail-Dienst anfassen, und es kann nicht ändern, wo die Website liegt. Es sieht, welcher E-Mail-Dienst Berichte sendet und von welcher Adresse, aber die Schlüssel und Kontodaten des Dienstes bleiben ihm verborgen. Link-Domains und E-Mail-Berichte fügt es nur hinzu, wenn die Installation ihre eigene Adresse kennt, über origin in routes() oder RUNLIGHT_URL auf dem eigenständigen Server. Der eigenständige Server bekommt eines per OAuth, wenn du die Website verbindest, du musst also selten eines von Hand erstellen.

Ein embed-Token gehört zu einem Plugin für WordPress, Drupal oder Craft, das das Dashboard einer Website in den Adminseiten des CMS zeigt. Überall sonst antwortet es mit 403 und token_embed_only. Sein einziger Zweck ist POST /api/embed, das ein Ticket für ein einzelnes Laden des Dashboards in einem Frame erstellt. Wer es hat, kann also das Dashboard dieser Website lesen. Erstelle eines unter Einstellungen, Einbinden, bei Dashboard-Schlüssel, oder mit POST /api/tokens.

Der Button Verbinden eines CMS-Plugins holt seinen Dashboard-Schlüssel per OAuth mit dem Scope cms. Die Zustimmungsseite bietet die Websites an, die die Domain des Plugins zählen, oder die eine Website, wenn sie keine Domains aufführt und daher alles zählt, oder eine neue Website, wenn Websites im Dashboard verwaltet werden. Die Token-Antwort enthält den Dashboard-Schlüssel als access_token, die ID der Website als site und ihren Agenten-Schlüssel als agents_key.

Anfragen, die etwas ändern, müssen content-type: application/json senden.

Berichte lesen

Jeder Bericht nimmt dieselben Query-Parameter.

Parameter Werte
site Die ID der Website, standardmäßig die erste Website.
period today, yesterday, 7d, 30d, 90d, month, last_month, year, 12mo oder all.
from, to Daten als YYYY-MM-DD, beide einschließlich, anstelle eines Zeitraums.
compare previous (der Standard), year, custom oder off.
compare_from, compare_to Die Daten, mit denen verglichen wird, für compare=custom.
filter dimension:op:value, wobei op is, not oder contains ist. Wiederhole ihn, um bis zu sechs anzuwenden.
interval hour, day, week oder month für Zeitreihen, standardmäßig passend zum Zeitraum gewählt.
Endpunkt Liefert
GET /api Den Namen, die Version und die API-Version der Installation, ohne Token.
GET /api/sites Jede Website, mit dem Zeitpunkt ihres letzten Besuchs.
GET /api/stats Besucher, Besuche, Seitenaufrufe, Seiten pro Besuch, Absprungrate und Besuchsdauer, mit denen des Vergleichszeitraums.
GET /api/series Dieselben Zahlen für jede Stunde, jeden Tag, jede Woche oder jeden Monat des Zeitraums.
GET /api/breakdown?dimension= Zeilen für eine Dimension, mit limit (bis 1000) und page.
GET /api/rhythm Besuche nach Wochentag und Stunde.
GET /api/realtime Personen, Seiten, Quellen und Länder der letzten 5 Minuten, mit Seitenaufrufen pro Minute und der letzten Aktivität über die letzten 30.
GET /api/goals Jedes Ziel mit seinen Conversions, konvertierten Besuchern, seiner Rate und seinem Umsatz.
GET /api/goals/:id Ein Ziel mit einer Zeitreihe und seinen Conversions nach Kanal, Quelle und Seite.
GET /api/funnels Jeden Trichter damit, wie viele Besuche jeden Schritt der Reihe nach innerhalb eines Besuchs erreicht haben.
GET /api/event-props?event= Die Namen der mit einem Ereignis gesendeten Eigenschaften und die Werte einer davon, gewählt mit key (standardmäßig die erste) und limit (bis 1000).
GET /api/export Ein ZIP mit CSV-Dateien für die Ansicht, mit den Zahlen, der Zeitreihe und jeder Aufschlüsselung, mit denselben Parametern wie die Berichte.
GET /api/journeys Die Wege, die Besuche nehmen: die Top-Seiten bei jedem Schritt, die Flüsse zwischen den Schritten und die häufigsten Pfade. Nimmt steps (2 bis 8), Seiten für start und end sowie through als step:page, um einer Seite zu folgen.
GET /api/links Kurzlinks mit ihren Klicks.
GET /api/links/:id Die Klicks eines Links im Zeitverlauf, Quellen, Länder, Geräte und Browser.
GET /api/icon Das Symbol der Website als Bild, abgerufen von der eigenen Domain der Website, oder ein 404, wenn sie keines hat. Freigabelinks können es auch lesen.

Ein Freigabelink und das Dashboard in einem CMS lesen die Berichte aus der Tabelle oben ohne Token, außer GET /api/links und GET /api/links/:id, und zwar für die eine Website, die sie zeigen. Die Seite eines Freigabelinks sendet x-runlight-share mit seiner ID. Die Seite des eingebetteten Dashboards sendet x-runlight-embed mit der Sitzung, die ihr Ticket geöffnet hat. Diese hält eine Stunde und endet sofort, wenn ihr Token gelöscht wird. Ist sie abgelaufen, antworten Lesezugriffe mit 401 und embed_expired. Eine Anfrage mit x-runlight-embed bekommt nichts weiter, egal was sie sonst sendet, und jede andere Anfrage damit antwortet mit 403 und share_not_available.

breakdown und filter nehmen die Dimensionen 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 und language an. breakdown nimmt außerdem ai_agent und ai_page.

Dinge ändern

Endpunkt Tut
PATCH /api/sites/:id Ändert name, timezone oder retentionMonths einer Website (6, 12, 24, 36 oder 60, oder null, um alles zu behalten). Auf dem eigenständigen Server auch hostnames.
POST /api/sites Fügt eine Website hinzu, wenn Websites im Dashboard verwaltet werden wie auf dem eigenständigen Server, aus { "name", "hostnames", "timezone" }. Um stattdessen eine andere Installation zu verbinden, sende { "remote": { "url", "token" } }.
DELETE /api/sites/:id Löscht eine verwaltete Website und alles, was für sie aufgezeichnet wurde, oder trennt eine verbundene.
POST /api/sites/connect Beginnt, eine andere Installation über ihre Zustimmungsseite zu verbinden, aus { "url" }. Antwortet mit authorize, der Adresse, an die der Eigentümer geschickt wird. Füge site mit der ID einer Website auf der Installation hinzu, damit diese zuerst angeboten wird.
GET /api/sites/connect/done Wohin die Zustimmungsseite den Eigentümer zurückschickt. Schließt das Verbinden ab und öffnet das Dashboard mit der Website.
POST /api/goals, PATCH /api/goals/:id, DELETE /api/goals/:id Fügt ein Ziel hinzu, ändert oder entfernt es.
POST /api/pick Erstellt ein Ticket für die Elementauswahl aus { "origin" }, dem eigenen Origin des Dashboards, an den die Auswahl ihre Wahl schickt und nirgendwo sonst hin. Das Ticket nennt auch die Website, und auf den Seiten einer anderen Website tut die Auswahl nichts. Ein Ticket gilt eine halbe Stunde. Wer etwas ändern darf, kann eines anfordern, ebenso ein Verwaltungs-Token für seine Website, dessen Tickets immer nur den Hub nennen, von dem aus es verbunden wurde.
POST /api/funnels, PATCH /api/funnels/:id, DELETE /api/funnels/:id Fügt einen Trichter hinzu, ändert oder entfernt ihn, gesendet als { "name", "steps" } mit zwei bis acht Schritten aus { "kind", "match" }, wobei kind page oder event ist.
POST /api/links, PATCH /api/links/:id, DELETE /api/links/:id Fügt einen Kurzlink hinzu, ändert oder entfernt ihn.
POST /api/links/import Fügt viele Kurzlinks auf einmal aus { "rows" } hinzu, bis zu 5.000 Objekte mit url und, wenn du willst, slug, name und domain. Antwortet damit, wie viele erstellt wurden und welche Zeilen gescheitert sind.
POST /api/links/import/:source Ein Schritt eines Imports aus umami, dub, bitly, shortio oder rebrandly, gesendet als { "credentials", "cursor", "done" }. Sende den cursor, mit dem es antwortet, bis er als null zurückkommt. Zugangsdaten werden genutzt und nie aufbewahrt.
POST /api/import/umami/websites Listet die Websites in einem Umami-Konto auf, aus { "credentials" }.
POST /api/import/umami/visits Ein Schritt beim Übernehmen des Besuchsverlaufs einer Umami-Website, aus { "credentials", "website", "cursor" }, wiederholt, bis cursor gleich null ist.
POST /api/import/csv/visits Schreibt bis zu 2.000 Zeilen einer Besuchs-CSV, gesendet als { "rows": [...] } mit jeder Zeile als Objekt ihrer Spalten, und antwortet mit { "pageviews", "events", "visits", "skipped" }. Sende die Zeilen, die ältesten zuerst, ohne einen Zeitpunkt auf zwei Anfragen zu verteilen, denn jede Anfrage ersetzt, was ein früherer Import in ihrer Zeitspanne geschrieben hat.
GET, POST /api/link-domains, DELETE /api/link-domains/:domain Listet eigene Link-Domains auf, fügt sie hinzu oder entfernt sie. Eine Link-Domain muss ein öffentlicher Name sein und nie die des Dashboards oder einer Website.
GET /api/link-domains/:domain/check Ob Anfragen an eine Link-Domain Runlight erreichen, als { "domain", "working", "reason", "code", "target" }. Dabei sagt reason, was stattdessen geantwortet hat, code benennt es, und target gibt den host an, auf den ein CNAME-Eintrag zeigen soll, und die öffentlichen addresses für einen A- oder AAAA-Eintrag.
GET, POST /api/shares, PATCH, DELETE /api/shares/:id Listet Freigabelinks auf, fügt sie hinzu, benennt sie um oder entfernt sie.
GET, PUT, DELETE /api/mail, POST /api/mail/test Liest, setzt, entfernt oder testet den E-Mail-Dienst. Schlüssel werden nie zurückgegeben. GET antwortet außerdem mit source (code, dashboard, app oder null) und services, den Diensten, die die Einstellungen anbieten. Wenn die App ihren eigenen Mailer übergibt, gibt es auch app, mit via, from, fromName und replaced, das true ist, solange ein gespeicherter Dienst an seiner Stelle sendet.
GET, POST /api/reports, DELETE /api/reports/:id, POST /api/reports/:id/send Listet Empfänger von Berichten auf, fügt sie hinzu oder entfernt sie, oder sendet ein Beispiel.
GET oder POST /api/check Führt den stündlichen Check aus.
POST /api/observe Zeichnet eine an einen KI-Agenten ausgelieferte Seite auf, gesendet als { "url", "userAgent", "at" }. Dabei ist at der Zeitpunkt der Auslieferung (innerhalb der letzten Woche, als Epoch-Millisekunden oder ISO-Datum) und kann weggelassen werden. Sende bis zu 500 auf einmal als { "fetches": [...] }. Nimmt das Token, den Agenten-Schlüssel der Website oder den installationsweiten observeKey an, und die CMS-Plugins und der Log-Leser rufen es auf. Ein einzelner Abruf antwortet 204 ohne Inhalt, und ein Stapel antwortet { "recorded", "skipped" } mit der Zahl der aufgezeichneten und der ausgelassenen Abrufe.
GET /api/tokens Listet API-Tokens auf, jeweils mit Name, Website, Scope, den letzten vier Zeichen und dem Zeitpunkt der letzten Nutzung. Die Tokens selbst werden nie zurückgegeben.
POST /api/tokens Erstellt ein Token aus { "name", "site", "scope" } und gibt es einmal als secret zurück. Lass site für alle Websites leer. scope ist read (der Standard), manage oder embed, und die letzten beiden brauchen eine site.
POST /api/embed Erstellt ein Ticket, das das Dashboard der Website einmal in einem Frame öffnet, aus { "origin" }, dem Origin der Adminseite, die es einrahmt, etwa https://example.com. Nur ein embed-Token kann danach fragen, und der Host des Origins muss, ohne www., eine der Domains seiner Website sein. Antwortet mit 201 und { "ticket", "site", "expiresAt", "path" }, wobei path gleich /runlight/embed?ticket=… ist. Ein Ticket funktioniert einmal, innerhalb von fünf Minuten.
GET /embed?ticket= Das Dashboard für einen Frame, außerhalb von /api. Mit einem Ticket, das weder benutzt noch abgelaufen ist, antwortet es mit 200 und einer Seite, die nur der Origin des Tickets einrahmen darf (frame-ancestors in ihrer CSP und kein X-Frame-Options) und die eine Sitzung von einer Stunde im Speicher hält, ohne Cookie. Ein schon benutztes oder abgelaufenes Ticket antwortet mit 410 und einer Seite, die das sagt und die Adminseite bittet, neu zu laden, eingerahmt vom selben Origin. Alles andere antwortet mit 404 und einer schlichten Seite, die niemand einrahmen darf. Füge theme=light oder theme=dark hinzu, damit es zum umgebenden Adminbereich passt, bis jemand im Frame ein Design wählt.
GET /api/observe-key, POST /api/observe-key/new Liest den Agenten-Schlüssel einer Website für CMS-Plugins, der beim ersten Abruf erstellt wird, oder ersetzt ihn durch einen neuen, was den alten sofort stoppt.
GET /api/token Sagt, was das mitgesendete Token darf, als { "scope", "site" }. Ein Hub fragt das, bevor er anbietet, etwas zu ändern.
DELETE /api/token Löscht das mitgesendete Token. Ein Hub tut das, wenn er eine Website trennt oder ein neues Token bekommt.
DELETE /api/tokens/:id Löscht ein Token, das dann sofort nicht mehr funktioniert.
GET, PUT, DELETE /api/assistant Liest, setzt oder entfernt { "provider", "model", "baseUrl", "key" } des Assistenten im Dashboard. Der Schlüssel wird nie zurückgegeben. Nur für den Eigentümer und die Admins, aber alle im Dashboard können fragen, ob er eingerichtet ist.
POST /api/assistant/models Die Modelle, die ein Anbieter anbietet, aus { "provider", "baseUrl", "key" }, für das Formular in den Einstellungen. Lass key weg, um den gespeicherten zu verwenden, was nur für denselben Anbieter und dieselbe Adresse funktioniert. Nur für den Eigentümer und die Admins.
POST /api/assistant/chat Fragt den Assistenten, mit { "site", "messages", "view", "language" }, wobei messages Paare aus { "role", "content" } sind, die mit einer Frage enden. Antwortet mit { "reply", "tools" }. Nur für Personen im Dashboard, nie für API-Tokens oder Freigabelinks. Jede Person kann dreißig Fragen pro Stunde und zwei gleichzeitig stellen, und jeder Betrachter die tägliche Zahl des Eigentümers, mit 429 jenseits davon.
PUT /api/assistant/limits Legt fest, wie viele Fragen jeder Betrachter pro Tag stellen kann, aus { "viewerDaily" }, einer ganzen Zahl von 0 bis 1.000. Der Startwert ist 50, und GET /api/assistant zeigt ihn dem Eigentümer und den Admins. Nur für den Eigentümer und die Admins.
GET /api/account Das eigene Konto der angemeldeten Person, als { "account" }. Jeder, der angemeldet ist, auch Betrachter.
POST /api/account/password Ändert dein eigenes Passwort, aus { "current", "next" }. Alle anderen Anmeldungen enden, und dieser Browser bekommt eine neue Sitzung.
POST /api/account/2fa/start, /confirm, /recovery, /disable Schaltet die Zwei-Faktor-Anmeldung ein, bestätigt sie mit dem ersten { "code" } aus der App, erstellt neue Wiederherstellungscodes oder schaltet sie aus. start antwortet { "secret", "uri" } für die Authenticator-App, und confirm und recovery antworten { "recovery" } mit den Codes. Alle außer confirm brauchen dein { "password" }.
GET, POST /api/people Listet alle mit einem Konto und die offenen Einladungen auf, als { "people", "invites" }, oder lädt jemanden aus { "email", "role" } ein, wobei role admin, member oder viewer ist. Eine Einladung antwortet 201 mit { "invite", "link", "emailed" }, und ihr Link gilt sieben Tage. Nur für den Eigentümer und die Admins.
PATCH, DELETE /api/people/:id Ändert die { "role" } einer Person oder entfernt sie zusammen mit den Tokens, die sie erstellt hat. Wer zum Betrachter wird, verliert seine Tokens ebenfalls. Nur der Eigentümer kann den Eigentümer ändern oder entfernen, und niemand kann sich selbst entfernen. Nur für den Eigentümer und die Admins.
DELETE /api/people/:id/2fa Schaltet die Zwei-Faktor-Anmeldung einer anderen Person aus, für jemanden, der Telefon und Wiederherstellungscodes verloren hat, mit deinem eigenen { "password" }. Nie die des Eigentümers. Nur für den Eigentümer und die Admins.
POST /api/people/:id/owner Übergibt das Eigentum an einen Admin, mit deinem { "password" }, und macht dich zum Admin. Nur für den Eigentümer.
DELETE /api/invites/:id, POST /api/invites/:id/resend Zieht eine Einladung zurück oder schickt sie mit einem neuen Link erneut, der den alten stoppt. Nur für den Eigentümer und die Admins.
POST /mcp Der MCP-Server für KI-Assistenten, beschrieben in Frag deine KI.

Die Endpunkte für das Konto und die Personen gibt es, wenn Konten eingeschaltet sind, wie auf dem eigenständigen Server. Sie antworten nur einer im Dashboard angemeldeten Person, nie einem Token, und allen anderen mit 401 und sign_in.

Fehler

Fehler sind JSON, { "error", "code", "params" }. error sagt auf einfachem Englisch, was schiefgegangen ist, code benennt es, und params füllen, falls vorhanden, die Platzhalter im Text. Das Dashboard zeigt jeden Code in seiner eigenen Sprache, und ein Skript kann sich auf den Code verlassen, wo sich der englische Text ändern kann.

Status Wann
400 Etwas in der Anfrage ist falsch oder fehlt.
401 Das Token fehlt oder ist dieser Installation nicht bekannt.
403 Ein Betrachter oder ein API-Token versucht eine Änderung, die nicht erlaubt ist.
404 Was die Anfrage nennt, gibt es nicht.
409 Ein Name ist vergeben, etwa eine Link-Domain, die eine andere Website hat.
413 Mehr als 500 Abrufe auf einmal an POST /api/observe.
415 Ein Schreibzugriff, der nicht application/json ist.
429 Zu viele in kurzer Zeit, etwa Anmeldeversuche, Beispiele, Fragen an den Assistenten oder OAuth-Registrierungen von einer Adresse.
500 Auf dem Server ist etwas schiefgegangen.
502 Eine verbundene Installation war nicht erreichbar, hat mit einer Weiterleitung geantwortet oder das Token abgelehnt, oder der KI-Dienst ist gescheitert.
503 Außerhalb der Entwicklung ist kein Token gesetzt.
504 Eine verbundene Installation hat zu lange für die Antwort gebraucht.

Das sind die Codes, die Params, die jeder füllt, und der Text, den das Dashboard dazu auf Deutsch zeigt. Die API selbst sendet diesen Text auf Englisch im Feld error. Ein Fehler, den eine verbundene Installation über einen Hub weitergibt, behält seinen Code und seine Params, und sein error beginnt mit dem Host der Installation. Die Prüfung einer Link-Domain gibt ihren reason auf dieselbe Weise mit einem check_-Code an.

Code Params Was das Dashboard zeigt
account_exists email {email} hat bereits ein Konto.
address_refused host {host} ist eine Link-Local- oder Cloud-Metadaten-Adresse, mit der sich Runlight nie verbindet.
admin_only Nur der Eigentümer oder ein Admin kann das ändern.
assistant_address Gib die Adresse des Dienstes unter Einstellungen, KI-Assistent ein.
assistant_address_bad Gib die Adresse des Dienstes ein, beginnend mit https://
assistant_cancelled Die Frage wurde abgebrochen.
assistant_daily limit Betrachter können {limit} Fragen pro Tag stellen. Frag morgen wieder.
assistant_dashboard Nur das Dashboard kann den Assistenten nutzen.
assistant_failed detail Der KI-Dienst hat nicht wie erwartet geantwortet ({detail}).
assistant_invalid detail Der Assistent wurde nicht gespeichert ({detail}).
assistant_key provider Gib deinen {provider}-Schlüssel ein.
assistant_limit Verwende eine ganze Zahl von 0 bis 1.000.
assistant_model Gib ein Modell unter Einstellungen, KI-Assistent ein.
assistant_no_models host {host} hat keine Modelle aufgeführt. Gib stattdessen den Namen des Modells ein.
assistant_provider Wähle einen KI-Dienst unter Einstellungen, KI-Assistent.
assistant_refused detail, host {host} hat die Anfrage abgelehnt ({detail}).
assistant_slow Die Antwort auf diese Frage hat zu lange gedauert. Frag etwas Engeres.
assistant_soon Du hast in kurzer Zeit viel gefragt. Warte kurz und frag dann noch einmal.
assistant_status host, status {host} hat mit {status} geantwortet.
assistant_steps Der Assistent brauchte für diese Frage zu viele Schritte. Frag etwas Engeres.
assistant_timeout host {host} hat zu lange für die Antwort gebraucht.
assistant_unset Der Assistent ist noch nicht eingerichtet. Ein Eigentümer kann das unter Einstellungen, KI-Assistent tun.
busy Runlight prüft gerade andere Anmeldungen. Versuch es gleich noch einmal.
check_https er ist über HTTPS nicht erreichbar
check_not_public es ist kein öffentlicher Domainname
check_not_runlight etwas hat geantwortet, aber nicht Runlight
check_status status er hat mit {status} geantwortet
check_timeout die Antwort hat zu lange gedauert
code_wrong Dieser Code stimmt nicht. Prüf die Uhrzeit auf deinem Handy und versuch den nächsten.
compare_bad compare Runlight kennt den Vergleich „{compare}“ nicht.
compare_range_bad Wähle beide Daten für den Vergleich.
connect_again Verbinde diese Website erneut, um sie von hier aus zu ändern.
connect_denied Die Verbindung wurde nicht erlaubt.
connect_endpoints url {url} hat Endpunkte unter einer anderen Adresse genannt.
connect_expired Die Verbindung hat zu lange gedauert oder wurde schon verwendet. Fang noch einmal an.
connect_failed detail Das Verbinden hat nicht begonnen ({detail}).
connect_not_runlight url {url} hat nicht wie eine Runlight-Installation geantwortet.
connect_old url {url} nutzt ein älteres Runlight. Aktualisiere es oder verbinde es mit einem API-Token aus seinen Einstellungen.
connect_refused Die Installation hat diesen Server nicht verbinden lassen. Fang noch einmal an oder verbinde sie mit einem API-Token.
connect_register reason, url {url} hat diesen Server nicht verbinden lassen. {reason}
connect_token Die Installation hat diesem Server kein Token gegeben. Fang noch einmal an.
connect_url Gib die Adresse der Installation ein, etwa https://example.com/runlight
domain_in_use domain Unter {domain} laufen dieses Dashboard oder eine deiner Websites. Nimm für Kurzlinks eine eigene Domain oder Subdomain, etwa go.{domain}.
domain_invalid Das ist kein Domainname.
domain_not_public domain {domain} ist kein öffentlicher Domainname. Nimm einen, den jeder Browser erreichen kann.
domain_taken domain {domain} gehört bereits zu einer anderen Website.
email_invalid Gib eine E-Mail-Adresse ein.
embed_expired Dieses Dashboard ist abgelaufen. Lade die Seite neu, um es wieder zu öffnen.
embed_host host {host} gehört nicht zu den Domains dieser Website. Füge es unter Einstellungen, Allgemein zu den Domains der Website hinzu, oder im Code, wenn die Websites dort festgelegt sind.
embed_origin Sende den Ursprung der Adminseite, etwa https://example.com
embed_site Ein Dashboard-Schlüssel gilt für eine Website. Wähle die Website aus.
embed_token Verwende den Dashboard-Schlüssel der Website, erstellt unter Einstellungen, Einbinden, bei WordPress, Drupal und Craft.
event_needed Nenne das Ereignis.
filter_bad filter Runlight kann den Filter „{filter}“ nicht lesen.
filters_max max Verwende höchstens {max} Filter gleichzeitig.
funnel_exists name Es gibt schon einen Trichter namens „{name}“.
funnel_invalid detail Der Trichter wurde nicht gespeichert ({detail}).
funnel_long Ein Trichter hat höchstens acht Schritte.
funnel_name Gib dem Trichter einen Namen.
funnel_page_bad match „{match}“ ist weder ein Pfad noch eine URL.
funnel_short Ein Trichter braucht mindestens zwei Schritte.
goal_amount Gib einen Betrag ein, etwa 49 oder 9,99.
goal_click_taken match Das Klickziel „{match}“ sendet schon Ereignisse mit diesem Namen.
goal_currency Verwende einen dreibuchstabigen Währungscode wie USD oder EUR.
goal_event Gib den Namen des Ereignisses ein.
goal_event_taken name Ein Ereignisziel zählt schon Ereignisse namens „{name}“, gib diesem Klickziel also einen anderen Namen.
goal_exists name Es gibt schon ein Ziel namens „{name}“.
goal_invalid detail Das Ziel wurde nicht gespeichert ({detail}).
goal_kind Wähle, was das Ziel zählt, ein Ereignis, einen Seitenbesuch oder einen Klick.
goal_link Gib die Adresse des Links ein, etwa https://buy.stripe.com/*
goal_name Gib dem Ziel einen Namen.
goal_page Gib einen Seitenpfad ein, etwa /danke oder /blog/*
goal_page_bad Diese Seite ist weder ein Pfad noch eine URL.
goal_prop_kind Nur ein Ereignisziel kann seinen Betrag aus dem Ereignis nehmen. Verwende stattdessen einen festen Betrag.
goal_prop_name Ein Eigenschaftsname besteht aus Buchstaben, Ziffern, Punkten, Bindestrichen und Unterstrichen.
goal_selector Gib einen CSS-Selektor ein, etwa #signup oder .buy-button
hub_domains Ein verbundener Hub kann die Domains einer Website nicht ändern.
icon_none Diese Website hat kein Symbol.
import_csv_batch max Sende höchstens {max} Zeilen auf einmal.
import_csv_format Diese Datei ist weder ein Umami-Export noch im Besuchsformat von Runlight. Prüfe ihre Kopfzeile.
import_day_full limit Ein Tag hat mehr als {limit} Ereignisse, mehr als ein Importschritt lesen kann.
import_failed detail Der Import wurde angehalten ({detail}).
import_key service Gib deinen {service}-Schlüssel ein.
import_refused Der Schlüssel oder die Anmeldung wurde abgelehnt.
import_slug_bad slug /{slug} enthält Zeichen, die ein Runlight-Slug nicht verwenden kann.
import_slug_taken name, slug /{slug} wird schon von „{name}“ verwendet.
import_source source Runlight kann nicht aus {source} importieren.
import_status host, status {host} hat mit {status} geantwortet.
import_umami_address Gib die Adresse deines Umami ein, etwa https://stats.example.com
import_umami_login Gib einen API-Schlüssel oder einen Benutzernamen und ein Passwort ein.
import_website Wähle die Umami-Website, die importiert werden soll.
install_refused Diese Installation hat das Token abgelehnt.
install_token Gib ein API-Token dieser Installation ein.
internal Auf dem Server ist etwas schiefgegangen. Versuch es noch einmal.
invite_gone Diese Einladung ist abgelaufen oder wurde schon benutzt. Bitte um eine neue.
link_domain domain Füge {domain} zuerst in den Einstellungen als Link-Domain hinzu.
link_long Das Ziel ist länger als 2.000 Zeichen.
link_no_slug Es wurde kein freier Slug gefunden. Versuch es noch einmal.
link_protocol Das Ziel muss mit http:// oder https:// beginnen
link_slug Ein Slug besteht aus Buchstaben, Ziffern, Bindestrichen und Unterstrichen, höchstens 100.
link_taken slug /{slug} ist schon vergeben.
link_url Das Ziel muss eine vollständige URL sein, die mit https:// beginnt
mail_app_failed detail, via {via} konnte die E-Mail nicht senden ({detail}).
mail_failed detail Die E-Mail konnte nicht gesendet werden ({detail}).
mail_field field {field} fehlt noch.
mail_from Gib die Absenderadresse der Berichte ein, zum Beispiel reports@example.com.
mail_https Die Webhook-URL muss https verwenden.
mail_in_code Der Mail-Dienst ist im Code festgelegt und lässt sich hier nicht ändern.
mail_option field, options {field} muss einer dieser Werte sein ({options}).
mail_port Der Port muss eine ganze Zahl von 1 bis 65535 sein.
mail_refused detail, host {host} hat die E-Mail abgelehnt ({detail}).
mail_region Das ist keine AWS-Region wie us-east-1.
mail_service service Wähle einen Mail-Dienst, der hier angeboten wird. service wird gesendet, wenn der angefragte Dienst nicht angeboten wird.
mail_slow host {host} hat zu lange gebraucht, deshalb wurde die E-Mail nicht gesendet.
mail_unreachable host {host} ist nicht erreichbar.
mail_unset Richte zuerst einen Mail-Dienst ein.
mail_url Gib die vollständige URL des Webhooks ein, etwa https://example.com/hooks/mail.
method_not_allowed Das geht hier nicht.
not_found Das gibt es hier nicht.
observe_many Sende höchstens 500 Abrufe auf einmal.
observe_url Sende die Adresse der Seite.
origin_needed Lege zuerst die eigene Adresse dieses Runlight fest (RUNLIGHT_URL auf dem Server oder origin in routes()), damit ein verbundener Hub Link-Domains und E-Mail-Berichte hinzufügen kann.
owner_hand_over Nur der Eigentümer kann das Eigentum übergeben.
owner_needs_admin Mach die Person zuerst zum Admin.
owner_only Nur ein Eigentümer kann das ändern.
owner_protected Niemand außer dem Eigentümer kann den Eigentümer ändern oder entfernen.
password_current_wrong Dein aktuelles Passwort stimmt nicht.
password_short min Nimm ein Passwort mit mindestens {min} Zeichen.
password_wrong Dein Passwort stimmt nicht.
people_owner Nur der Eigentümer oder ein Admin kann Personen verwalten.
pick_hub Die Adresse dieses Hubs ist nicht die, von der aus er sich verbunden hat. Verbinde die Website von hier aus erneut.
pick_origin Sende den Ursprung des Dashboards, etwa https://stats.example.com
pick_return Sende die Adresse des Dashboards mit /pick-return am Ende, auf seinem Origin, und eine Nonce aus 32 Hexziffern
property_bad Runlight kann diesen Eigenschaftsnamen nicht lesen.
question_needed Stell eine Frage.
range_bad Diese Daten sind kein Zeitraum, den Runlight lesen kann.
redirected host {host} hat mit einer Weiterleitung geantwortet.
remote_slow host {host} hat zu lange gebraucht. Versuch einen kürzeren Zeitraum.
remove_self Du kannst dich nicht selbst entfernen.
report_exists email {email} bekommt diesen Bericht bereits.
report_limit Eine Website kann an höchstens 50 Adressen senden.
retention_bad months Behalte Besuche {months} Monate lang oder für immer.
role_needed Wähle Admin, Mitglied oder Betrachter.
rows_needed Sende die Links als Liste von Zeilen.
sample_soon Gerade ging schon ein Beispiel raus. Warte eine Minute und versuch es noch einmal.
sample_soon_hub Ein verbundener Hub kann alle zehn Minuten ein Beispiel senden. Warte ein paar Minuten und versuch es noch einmal.
send_json Sende das als JSON.
send_object Sende ein JSON-Objekt.
share_gone Dieser Freigabelink funktioniert nicht mehr.
share_not_available Das ist auf einem geteilten Dashboard nicht verfügbar.
sign_in Melde dich zuerst an.
site_domain_invalid host „{host}“ ist kein Domainname.
site_domain_needed Füge die Domain der Website hinzu, etwa example.com
site_domain_taken host, site {host} gehört schon zu {site}.
site_invalid detail Die Website wurde nicht gespeichert ({detail}).
site_name Ein Website-Name hat 1 bis 80 Zeichen.
site_remote Diese Website wird von ihrem eigenen Runlight gezählt. Verbinde sie in ihren Einstellungen erneut, um sie von hier aus zu ändern.
sites_in_code Die Websites sind hier im Code festgelegt und werden dort geändert.
smtp_starttls Der SMTP-Server bietet kein STARTTLS an. Wähle bei Sicherheit TLS oder keine.
tables_busy Runlight legt gerade seine Tabellen an oder aktualisiert sie. Versuch es in einer Minute noch einmal.
test_email Gib eine E-Mail-Adresse ein, an die der Test gehen soll.
token_embed_only Ein Dashboard-Schlüssel öffnet das Dashboard nur in einem CMS.
token_manage_only Ein Verwaltungs-Token ändert nur die Einstellungen seiner eigenen Website.
token_name Gib dem Token einen Namen.
token_read_only API-Tokens können nur lesen.
token_refused host {host} hat das Token abgelehnt. Verbinde es in den Einstellungen der Website neu.
token_site Ein Token, das Einstellungen ändert, gilt für eine Website. Wähle die Website.
token_unset Setze RUNLIGHT_TOKEN oder übergib token oder authorize an routes(). Ohne das ist Runlight nur offen, wenn NODE_ENV development ist.
too_many_tries Zu viele Versuche. Warte fünfzehn Minuten und versuch es noch einmal.
twofactor_off Schalte zuerst die Zwei-Faktor-Anmeldung ein.
twofactor_restart Zu viele falsche Codes. Beginne erneut mit dem Einschalten der Zwei-Faktor-Anmeldung.
twofactor_self Deine eigene Zwei-Faktor-Anmeldung schaltest du unter Konto aus.
unauthorized Melde dich an oder sende ein Token, um das zu sehen.
unknown_account Dieses Konto gibt es nicht mehr.
unknown_dimension dimension Runlight kennt die Aufschlüsselung „{dimension}“ nicht.
unknown_domain Diese Domain gehört nicht zu dieser Website.
unknown_funnel Diesen Trichter gibt es nicht mehr.
unknown_goal Dieses Ziel gibt es nicht mehr.
unknown_invite Diese Einladung gibt es nicht mehr.
unknown_link Diesen Link gibt es nicht mehr.
unknown_report Diesen Bericht gibt es nicht mehr.
unknown_share Diesen Freigabelink gibt es nicht mehr.
unknown_site Diese Website gibt es hier nicht.
unknown_timezone timezone Runlight kennt die Zeitzone „{timezone}“ nicht.
unknown_token Dieses Token gibt es nicht mehr.
unreachable host {host} ist nicht erreichbar.