Referência
API HTTP
Tudo o que o painel mostra está em JSON em /runlight/api, para os seus próprios scripts e ferramentas.
O painel é construído sobre esta API, então você mesmo pode obter tudo o que ele mostra. Envie um token como bearer.
bash
curl https://example.com/runlight/api/stats?period=30d -H "Authorization: Bearer $RUNLIGHT_TOKEN"Para scripts, crie um token só de leitura em Configurações, API e IA, e guarde o RUNLIGHT_TOKEN só para você. Um token só de leitura pode ler todos os relatórios abaixo, incluindo os links curtos e os cliques de cada um, e nunca muda nada. Você pode limitá-lo a um site, e ele para de funcionar no momento em que você o apaga. Os endpoints que mudam algo aceitam o RUNLIGHT_TOKEN, um proprietário, administrador ou membro que fez login, a sua verificação authorize ou um token manage para o site dele. Um membro pode mudar tudo exceto o serviço de e-mail, as configurações do assistente e a exclusão de um site. Os mesmos tokens conectam assistentes de IA, como explica Pergunte à sua IA.
Um token manage pertence a um servidor independente que mostra este site. Ele lê como um token só de leitura e também pode mudar as metas, funis, links curtos, domínios de links, relatórios por email e links de compartilhamento de um site, além do nome, fuso horário e retenção dele, e obter tickets para o seletor de elementos. Ele nunca pode mexer em outros sites, pessoas, tokens, importações ou no serviço de e-mail, e não pode mudar onde o site fica. Ele vê qual serviço de e-mail envia os relatórios e de qual endereço, e as chaves e os dados de conta do serviço ficam escondidos dele. Ele só adiciona domínios de links e relatórios por email quando a instalação conhece o próprio endereço, por meio de origin em routes() ou de RUNLIGHT_URL no servidor independente. O servidor independente recebe um por OAuth quando você conecta o site, então raramente você cria um à mão.
Um token embed pertence a um plugin de WordPress, Drupal ou Craft que mostra o painel de um site dentro da administração do CMS. Em qualquer outro lugar ele responde 403 com token_embed_only. O único uso dele é POST /api/embed, que cria um ticket para um único carregamento do painel num frame, então quem o tem pode ler o painel daquele site. Crie um em Configurações, Instalação, em Chave do painel, ou com POST /api/tokens.
O botão Conectar de um plugin de CMS obtém a chave do painel por OAuth com o escopo cms. A página de consentimento oferece os sites que contam o domínio do plugin, ou o único site quando ele não lista domínios e por isso conta qualquer um, ou um site novo quando os sites são gerenciados no painel. A resposta do token traz a chave do painel como access_token, o id do site como site e a chave de agentes dele como agents_key.
As requisições que mudam algo precisam enviar content-type: application/json.
Ler relatórios
Todo relatório aceita os mesmos parâmetros de query.
| Parâmetro | Valores |
|---|---|
site |
O id do site, com o primeiro site como padrão. |
period |
today, yesterday, 7d, 30d, 90d, month, last_month, year, 12mo ou all. |
from, to |
Datas no formato YYYY-MM-DD, as duas inclusivas, no lugar de um período. |
compare |
previous (o padrão), year, custom ou off. |
compare_from, compare_to |
As datas com que comparar, para compare=custom. |
filter |
dimension:op:value, onde op é is, not ou contains. Repita-o para aplicar até seis. |
interval |
hour, day, week ou month para séries, escolhido a partir do período por padrão. |
| Endpoint | Retorna |
|---|---|
GET /api |
O nome, a versão e a versão da API da instalação, sem precisar de token. |
GET /api/sites |
Todos os sites, com a data da última visita de cada um. |
GET /api/stats |
Visitantes, visitas, visualizações, páginas por visita, taxa de rejeição e duração da visita, com os do período de comparação. |
GET /api/series |
Os mesmos números para cada hora, dia, semana ou mês do período. |
GET /api/breakdown?dimension= |
Linhas de uma dimensão, com limit (até 1000) e page. |
GET /api/rhythm |
Visitas por dia da semana e hora. |
GET /api/realtime |
Pessoas, páginas, origens e países dos últimos 5 minutos, com as visualizações por minuto e a atividade recente dos últimos 30. |
GET /api/goals |
Todas as metas com as conversões, os visitantes que converteram, a taxa e a receita. |
GET /api/goals/:id |
Uma meta com uma série e as conversões dela por canal, origem e página. |
GET /api/funnels |
Todos os funis com quantas visitas chegaram a cada passo, em ordem, dentro de uma visita. |
GET /api/event-props?event= |
Os nomes de propriedades enviados com um evento, e os valores de um deles, escolhido com key (o primeiro por padrão) e limit (até 1000). |
GET /api/export |
Um ZIP de arquivos CSV da visão, com os números, a série e cada detalhamento, aceitando os mesmos parâmetros dos relatórios. |
GET /api/journeys |
Os caminhos que as visitas fazem: as páginas principais em cada passo, os fluxos entre os passos e os caminhos mais comuns. Aceita steps (2 a 8), páginas start e end e through como step:page para seguir uma página. |
GET /api/links |
Os links curtos com os cliques. |
GET /api/links/:id |
Os cliques de um link ao longo do tempo, as origens, os países, os dispositivos e os navegadores. |
GET /api/icon |
O ícone do site como imagem, buscado no próprio domínio do site, ou um 404 quando ele não tem. Os links de compartilhamento também podem lê-lo. |
Um link de compartilhamento e o painel dentro de um CMS leem os relatórios da tabela acima sem token, exceto GET /api/links e GET /api/links/:id, para o único site que mostram. A página de um link de compartilhamento envia x-runlight-share com o id dele. A página do painel embutido envia x-runlight-embed com a sessão que o ticket abriu, que dura uma hora e termina na hora quando o token dela é apagado. Depois que ela expira, as leituras respondem 401 com embed_expired. Uma requisição que traz x-runlight-embed não recebe nada além disso, não importa o que mais ela envie, e qualquer outra requisição com esse cabeçalho responde 403 com share_not_available.
breakdown e filter aceitam as dimensões 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 e language. breakdown também aceita ai_agent e ai_page.
Fazer alterações
| Endpoint | Faz |
|---|---|
PATCH /api/sites/:id |
Muda o name, o timezone ou o retentionMonths de um site (6, 12, 24, 36 ou 60, ou null para guardar tudo). No servidor independente, também hostnames. |
POST /api/sites |
Adiciona um site, quando os sites são gerenciados no painel, como no servidor independente, a partir de { "name", "hostnames", "timezone" }. Para conectar outra instalação em vez disso, envie { "remote": { "url", "token" } }. |
DELETE /api/sites/:id |
Exclui um site gerenciado e tudo o que foi registrado para ele, ou desconecta um site conectado. |
POST /api/sites/connect |
Começa a conectar outra instalação pela página de consentimento dela, a partir de { "url" }. Responde com authorize, o endereço para onde mandar o proprietário. Adicione site com o id de um site da instalação para oferecê-lo primeiro. |
GET /api/sites/connect/done |
Para onde a página de consentimento manda o proprietário de volta. Conclui a conexão e abre o painel no site. |
POST /api/goals, PATCH /api/goals/:id, DELETE /api/goals/:id |
Adiciona, muda ou remove uma meta. |
POST /api/pick |
Cria um ticket para o seletor de elementos a partir de { "origin" }, a origem do próprio painel, para onde o seletor envia a escolha e para nenhum outro lugar. O ticket também indica o site, e o seletor não faz nada nas páginas de outro site. Um ticket vale por meia hora. Pode pedi-lo quem pode mudar coisas, e também um token de gestão para o site dele, cujos tickets só indicam o hub de onde ele se conectou. |
POST /api/funnels, PATCH /api/funnels/:id, DELETE /api/funnels/:id |
Adiciona, muda ou remove um funil, enviado como { "name", "steps" } com dois a oito passos de { "kind", "match" }, onde kind é page ou event. |
POST /api/links, PATCH /api/links/:id, DELETE /api/links/:id |
Adiciona, muda ou remove um link curto. |
POST /api/links/import |
Adiciona muitos links curtos de uma vez a partir de { "rows" }, até 5.000 objetos com url e, se quiser, slug, name e domain. Responde com quantos criou e quais linhas falharam. |
POST /api/links/import/:source |
Uma etapa de uma importação de umami, dub, bitly, shortio ou rebrandly, enviada como { "credentials", "cursor", "done" }. Envie o cursor da resposta até ele voltar null. As credenciais são usadas e nunca guardadas. |
POST /api/import/umami/websites |
Lista os sites de uma conta do Umami, a partir de { "credentials" }. |
POST /api/import/umami/visits |
Uma etapa para trazer o histórico de visitas de um site do Umami, a partir de { "credentials", "website", "cursor" }, repetida até cursor ser null. |
POST /api/import/csv/visits |
Grava até 2.000 linhas de um CSV de visitas, enviadas como { "rows": [...] }, com cada linha sendo um objeto com as colunas, e responde { "pageviews", "events", "visits", "skipped" }. Envie as linhas das mais antigas para as mais recentes, sem dividir um mesmo momento entre duas requisições, já que cada requisição substitui o que uma importação anterior gravou no intervalo de tempo dele. |
GET, POST /api/link-domains, DELETE /api/link-domains/:domain |
Lista, adiciona ou remove domínios personalizados de links. Um domínio de links precisa ser um nome público, e nunca o do próprio painel nem o de um site. |
GET /api/link-domains/:domain/check |
Se as requisições a um domínio de links chegam ao Runlight, como { "domain", "working", "reason", "code", "target" }, onde reason diz o que respondeu no lugar, code dá nome a isso e target traz o host para onde um registro CNAME deve apontar e os addresses públicos que um registro A ou AAAA deve usar. |
GET, POST /api/shares, PATCH, DELETE /api/shares/:id |
Lista, adiciona, renomeia ou remove links de compartilhamento. |
GET, PUT, DELETE /api/mail, POST /api/mail/test |
Lê, define, remove ou testa o serviço de e-mail. As chaves nunca são devolvidas. GET também responde source (code, dashboard, app ou null) e services, os serviços que as Configurações oferecem. Quando o app passa o próprio mailer, também há app, com via, from, fromName e replaced, que é true enquanto um serviço salvo envia no lugar dele. |
GET, POST /api/reports, DELETE /api/reports/:id, POST /api/reports/:id/send |
Lista, adiciona ou remove destinatários de relatórios, ou envia um exemplo. |
GET ou POST /api/check |
Roda a verificação agendada. |
POST /api/observe |
Registra uma página servida a um agente de IA, enviada como { "url", "userAgent", "at" }, onde at é quando ela foi servida (dentro da última semana, em milissegundos epoch ou como data ISO) e pode ficar de fora. Envie até 500 de uma vez como { "fetches": [...] }. Aceita o token, a chave de agentes do site ou a observeKey da instalação inteira, e os plugins de CMS e o leitor de logs o chamam. Uma só requisição responde 204 sem corpo, e um lote responde { "recorded", "skipped" } com quantas registrou e quantas deixou de fora. |
GET /api/tokens |
Lista os tokens de API com o nome, o site, o escopo, os últimos quatro caracteres e quando cada um foi usado pela última vez. Os próprios tokens nunca são devolvidos. |
POST /api/tokens |
Cria um token a partir de { "name", "site", "scope" } e o devolve uma vez como secret. Deixe site vazio para todos os sites. scope é read (o padrão), manage ou embed, e os dois últimos precisam de um site. |
POST /api/embed |
Cria um ticket que abre o painel do site uma vez num frame, a partir de { "origin" }, a origem da página de administração que o enquadra, como https://example.com. Só um token embed pode pedir, e o host da origem, sem www., precisa ser um dos domínios do site dele. Responde 201 com { "ticket", "site", "expiresAt", "path" }, onde path é /runlight/embed?ticket=…. Um ticket funciona uma vez, dentro de cinco minutos. |
GET /embed?ticket= |
O painel para um frame, fora de /api. Com um ticket que não foi usado nem expirou, responde 200 com uma página que só a origem do ticket pode enquadrar (frame-ancestors na CSP dela, e sem X-Frame-Options) e que mantém uma sessão de uma hora na memória, sem cookie. Um ticket já usado ou expirado responde 410 com uma página que avisa isso e pede à página de administração para recarregar, enquadrada pela mesma origem. Qualquer outra coisa responde 404 com uma página simples que nada pode enquadrar. Adicione theme=light ou theme=dark para combinar com a administração ao redor até alguém escolher um tema dentro do frame. |
GET /api/observe-key, POST /api/observe-key/new |
Lê a chave de agentes de um site para os plugins de CMS, criada na primeira vez que é pedida, ou a substitui por uma nova, o que desativa a antiga na hora. |
GET /api/token |
Diz o que o token enviado pode fazer, como { "scope", "site" }. Um hub pergunta isso antes de oferecer qualquer mudança. |
DELETE /api/token |
Apaga o token enviado. Um hub faz isso quando desconecta um site ou recebe um token novo. |
DELETE /api/tokens/:id |
Apaga um token, que para de funcionar na hora. |
GET, PUT, DELETE /api/assistant |
Lê, define ou remove o { "provider", "model", "baseUrl", "key" } do assistente do painel. A chave nunca é devolvida. Só para o proprietário e os administradores, mas qualquer pessoa no painel pode perguntar se ele está configurado. |
POST /api/assistant/models |
Os modelos que um provedor oferece, a partir de { "provider", "baseUrl", "key" }, para o formulário de configurações. Deixe key de fora para usar a chave salva, o que só funciona para o mesmo provedor e endereço. Só para o proprietário e os administradores. |
POST /api/assistant/chat |
Pergunta ao assistente, enviando { "site", "messages", "view", "language" }, onde messages são pares { "role", "content" } que terminam com uma pergunta. Responde { "reply", "tools" }. Só para pessoas no painel, nunca para tokens de API nem links de compartilhamento. Cada pessoa pode fazer trinta perguntas por hora e duas ao mesmo tempo, e cada leitor o número diário definido pelo proprietário, com 429 ao passar de qualquer um deles. |
PUT /api/assistant/limits |
Define quantas perguntas cada leitor pode fazer por dia, a partir de { "viewerDaily" }, um número inteiro de 0 a 1.000. Começa em 50, e GET /api/assistant o mostra ao proprietário e aos administradores. Só para o proprietário e os administradores. |
GET /api/account |
A conta da pessoa que fez login, como { "account" }. Qualquer pessoa com login, leitores incluídos. |
POST /api/account/password |
Muda a sua própria senha, a partir de { "current", "next" }. Todos os outros logins terminam, e este navegador recebe uma sessão nova. |
POST /api/account/2fa/start, /confirm, /recovery, /disable |
Ativa o login em duas etapas, confirma-o com o primeiro { "code" } do app, cria códigos de recuperação novos ou o desativa. start responde { "secret", "uri" } para o app autenticador, e confirm e recovery respondem { "recovery" } com os códigos. Todos exceto confirm pedem a sua { "password" }. |
GET, POST /api/people |
Lista todas as pessoas com conta e os convites em aberto, como { "people", "invites" }, ou convida alguém a partir de { "email", "role" }, onde role é admin, member ou viewer. Um convite responde 201 com { "invite", "link", "emailed" }, e o link dele vale por sete dias. Só para o proprietário e os administradores. |
PATCH, DELETE /api/people/:id |
Muda o { "role" } de alguém, ou remove a pessoa junto com os tokens que ela criou. Quem passa a ser leitor também perde os tokens. Só o proprietário pode mudar ou remover o proprietário, e ninguém pode remover a si mesmo. Só para o proprietário e os administradores. |
DELETE /api/people/:id/2fa |
Desativa o login em duas etapas de outra pessoa, para quem perdeu o telefone e os códigos de recuperação, a partir da sua própria { "password" }. Nunca o do proprietário. Só para o proprietário e os administradores. |
POST /api/people/:id/owner |
Passa a propriedade para um administrador, a partir da sua { "password" }, e faz de você um administrador. Só para o proprietário. |
DELETE /api/invites/:id, POST /api/invites/:id/resend |
Cancela um convite, ou o envia de novo com um link novo que desativa o antigo. Só para o proprietário e os administradores. |
POST /mcp |
O servidor MCP para assistentes de IA, descrito em Pergunte à sua IA. |
Os endpoints da conta e das pessoas existem quando as contas estão ativadas, como no servidor independente. Eles só respondem a uma pessoa que fez login no painel, nunca a um token, e respondem 401 com sign_in a qualquer outro.
Erros
Os erros vêm em JSON, { "error", "code", "params" }. error diz o que deu errado em inglês simples, code dá nome ao erro e params, quando há, preenchem os espaços reservados no texto. O painel mostra cada código no próprio idioma, e um script pode confiar no código, já que o texto em inglês pode mudar.
| Status | Quando |
|---|---|
| 400 | Algo na requisição está errado ou faltando. |
| 401 | O token está faltando ou não é um que esta instalação conhece. |
| 403 | Um leitor ou um token de API tenta uma mudança que não pode fazer. |
| 404 | O que a requisição indica não está lá. |
| 409 | Um nome já está em uso, como um domínio de links que outro site tem. |
| 413 | Mais de 500 leituras de uma vez em POST /api/observe. |
| 415 | Uma escrita que não é application/json. |
| 429 | Requisições demais em pouco tempo, como tentativas de login, exemplos, perguntas ao assistente ou registros OAuth de um mesmo endereço. |
| 500 | Algo deu errado no servidor. |
| 502 | Uma instalação conectada não pôde ser acessada, respondeu com um redirecionamento ou recusou o token, ou o serviço de IA falhou. |
| 503 | Nenhum token está definido fora do modo de desenvolvimento. |
| 504 | Uma instalação conectada demorou demais para responder. |
Estes são os códigos e os params que cada um preenche. Um erro que uma instalação conectada repassa por um hub mantém o código e os params, e o error dele começa com o host da instalação. A verificação de um domínio de links responde o reason com um código check_ do mesmo jeito. A última coluna mostra o texto que o painel exibe em português para cada código. A própria API envia esse texto em inglês, no campo error.
| Código | Params | O que diz |
|---|---|---|
account_exists |
email |
{email} já tem uma conta. |
address_refused |
host |
{host} é um endereço link-local ou de metadados da nuvem, ao qual o Runlight nunca se conecta. |
admin_only |
Só o proprietário ou um administrador pode mudar isso. | |
assistant_address |
Digite o endereço do serviço em Configurações, Assistente de IA. | |
assistant_address_bad |
Digite o endereço do serviço, começando com https:// | |
assistant_cancelled |
A pergunta foi cancelada. | |
assistant_daily |
limit |
Leitores podem fazer {limit} perguntas por dia. Pergunte de novo amanhã. |
assistant_dashboard |
Só o painel pode usar o assistente. | |
assistant_failed |
detail |
O serviço de IA não respondeu como esperado ({detail}). |
assistant_invalid |
detail |
O assistente não foi salvo ({detail}). |
assistant_key |
provider |
Digite sua chave do {provider}. |
assistant_limit |
Use um número inteiro de 0 a 1.000. | |
assistant_model |
Digite um modelo em Configurações, Assistente de IA. | |
assistant_no_models |
host |
{host} não listou nenhum modelo. Digite o nome do modelo. |
assistant_provider |
Escolha um serviço de IA em Configurações, Assistente de IA. | |
assistant_refused |
detail, host |
{host} recusou o pedido ({detail}). |
assistant_slow |
Essa pergunta demorou demais para ser respondida. Tente algo mais específico. | |
assistant_soon |
Você perguntou muito em pouco tempo. Espere um pouco e pergunte de novo. | |
assistant_status |
host, status |
{host} respondeu {status}. |
assistant_steps |
O assistente precisou de passos demais para essa pergunta. Tente algo mais específico. | |
assistant_timeout |
host |
{host} demorou demais para responder. |
assistant_unset |
O assistente ainda não está configurado. Um proprietário pode configurá-lo em Configurações, Assistente de IA. | |
busy |
O Runlight está ocupado verificando outros logins. Tente de novo em um instante. | |
check_https |
não foi possível acessá-lo por HTTPS | |
check_not_public |
não é um nome de domínio público | |
check_not_runlight |
algo respondeu, mas não o Runlight | |
check_status |
status |
respondeu {status} |
check_timeout |
demorou demais para responder | |
code_wrong |
Esse código não está certo. Confira a hora do seu celular e tente o próximo. | |
compare_bad |
compare |
O Runlight não conhece a comparação "{compare}". |
compare_range_bad |
Escolha as duas datas para comparar. | |
connect_again |
Conecte este site de novo para alterá-lo daqui. | |
connect_denied |
A conexão não foi permitida. | |
connect_endpoints |
url |
{url} indicou endpoints em outro endereço. |
connect_expired |
Essa conexão demorou demais ou já foi usada. Comece de novo. | |
connect_failed |
detail |
A conexão não começou ({detail}). |
connect_not_runlight |
url |
{url} não respondeu como uma instalação do Runlight. |
connect_old |
url |
{url} usa uma versão antiga do Runlight. Atualize-a ou conecte-a com um token de API das configurações dela. |
connect_refused |
A instalação não deixou este servidor se conectar. Comece de novo ou conecte-a com um token de API. | |
connect_register |
reason, url |
{url} não deixou este servidor se conectar. {reason} |
connect_token |
A instalação não deu um token a este servidor. Comece de novo. | |
connect_url |
Digite o endereço da instalação, como https://example.com/runlight | |
domain_in_use |
domain |
{domain} hospeda este painel ou um dos seus sites. Use um domínio ou subdomínio separado para os links curtos, como go.{domain}. |
domain_invalid |
Isso não é um nome de domínio. | |
domain_not_public |
domain |
{domain} não é um domínio público. Use um que qualquer navegador consiga acessar. |
domain_taken |
domain |
{domain} já pertence a outro site. |
email_invalid |
Digite um endereço de e-mail. | |
embed_expired |
Este painel expirou. Recarregue a página para abri-lo de novo. | |
embed_host |
host |
{host} não é um dos domínios deste site. Adicione-o aos domínios do site, em Configurações, Geral, ou no código quando os sites são definidos lá. |
embed_origin |
Envie a origem da página de administração, como https://example.com | |
embed_site |
Uma chave do painel é para um só site. Escolha o site. | |
embed_token |
Use a chave do painel do site, criada em Configurações, Instalação, em WordPress, Drupal e Craft. | |
event_needed |
Informe o evento. | |
filter_bad |
filter |
O Runlight não entende o filtro "{filter}". |
filters_max |
max |
Use no máximo {max} filtros de uma vez. |
funnel_exists |
name |
Já existe um funil chamado "{name}". |
funnel_invalid |
detail |
O funil não foi salvo ({detail}). |
funnel_long |
Um funil tem no máximo oito etapas. | |
funnel_name |
Dê um nome ao funil. | |
funnel_page_bad |
match |
"{match}" não é um caminho nem uma URL. |
funnel_short |
Um funil precisa de pelo menos duas etapas. | |
goal_amount |
Digite um valor, como 49 ou 9,99. | |
goal_click_taken |
match |
A meta de clique "{match}" já envia eventos com esse nome. |
goal_currency |
Use um código de moeda de três letras, como USD ou EUR. | |
goal_event |
Digite o nome do evento. | |
goal_event_taken |
name |
Uma meta de evento já conta eventos chamados "{name}", então dê outro nome a esta meta de clique. |
goal_exists |
name |
Já existe uma meta chamada "{name}". |
goal_invalid |
detail |
A meta não foi salva ({detail}). |
goal_kind |
Escolha o que a meta conta, um evento, uma visita a uma página ou um clique. | |
goal_link |
Digite o endereço do link, como https://buy.stripe.com/* | |
goal_name |
Dê um nome à meta. | |
goal_page |
Digite o caminho de uma página, como /obrigado ou /blog/* | |
goal_page_bad |
Essa página não é um caminho nem uma URL. | |
goal_prop_kind |
Só uma meta de evento pode tirar o valor do evento. Use um valor fixo. | |
goal_prop_name |
Um nome de propriedade usa letras, números, pontos, hífens e sublinhados. | |
goal_selector |
Digite um seletor CSS, como #signup ou .buy-button | |
hub_domains |
Um hub conectado não pode alterar os domínios de um site. | |
icon_none |
Este site não tem ícone. | |
import_csv_batch |
max |
Envie no máximo {max} linhas por vez. |
import_csv_format |
Este arquivo não é uma exportação do Umami nem está no formato de visitas do Runlight. Confira a linha de cabeçalho. | |
import_day_full |
limit |
Um dia tem mais de {limit} eventos, mais do que uma etapa de importação consegue ler. |
import_failed |
detail |
A importação parou ({detail}). |
import_key |
service |
Digite sua chave do {service}. |
import_refused |
A chave ou o login foi recusado. | |
import_slug_bad |
slug |
/{slug} tem caracteres que um slug do Runlight não pode usar. |
import_slug_taken |
name, slug |
/{slug} já é usado por "{name}". |
import_source |
source |
O Runlight não consegue importar de {source}. |
import_status |
host, status |
{host} respondeu {status}. |
import_umami_address |
Digite o endereço do seu Umami, como https://stats.example.com | |
import_umami_login |
Digite uma chave de API, ou um usuário e uma senha. | |
import_website |
Escolha o site do Umami a importar. | |
install_refused |
Essa instalação recusou o token. | |
install_token |
Digite um token de API dessa instalação. | |
internal |
Algo deu errado no servidor. Tente de novo. | |
invite_gone |
Este convite expirou ou já foi usado. Peça um novo. | |
link_domain |
domain |
Primeiro adicione {domain} como domínio de links nas Configurações. |
link_long |
O destino tem mais de 2.000 caracteres. | |
link_no_slug |
Não foi possível achar um slug livre. Tente de novo. | |
link_protocol |
O destino deve começar com http:// ou https:// | |
link_slug |
Um slug tem letras, dígitos, hifens e sublinhados, até 100. | |
link_taken |
slug |
/{slug} já está em uso. |
link_url |
O destino deve ser uma URL completa, começando com https:// | |
mail_app_failed |
detail, via |
{via} não conseguiu enviar o e-mail ({detail}). |
mail_failed |
detail |
Não foi possível enviar o e-mail ({detail}). |
mail_field |
field |
O campo {field} é obrigatório. |
mail_from |
Digite o endereço de onde saem os relatórios, como reports@example.com. | |
mail_https |
A URL do webhook precisa usar https. | |
mail_in_code |
O serviço de e-mail está definido no código, então não pode ser alterado aqui. | |
mail_option |
field, options |
{field} deve ser um destes valores ({options}). |
mail_port |
A porta precisa ser um número inteiro de 1 a 65535. | |
mail_refused |
detail, host |
{host} recusou o e-mail ({detail}). |
mail_region |
Isso não é uma região da AWS, como us-east-1. | |
mail_service |
service |
Escolha um serviço de e-mail oferecido aqui. service é enviado quando o serviço pedido não é oferecido. |
mail_slow |
host |
{host} demorou demais para responder, então o e-mail não foi enviado. |
mail_unreachable |
host |
Não foi possível acessar {host}. |
mail_unset |
Primeiro configure um serviço de e-mail. | |
mail_url |
Digite a URL completa do webhook, como https://example.com/hooks/mail. | |
method_not_allowed |
Isso não pode ser feito aqui. | |
not_found |
Isso não está aqui. | |
observe_many |
Envie no máximo 500 acessos de uma vez. | |
observe_url |
Envie o endereço da página. | |
origin_needed |
Defina primeiro o endereço deste Runlight (RUNLIGHT_URL no servidor, ou origin em routes()) para que um hub conectado possa adicionar domínios de links e relatórios por email. | |
owner_hand_over |
Só o proprietário pode passar a propriedade. | |
owner_needs_admin |
Torne a pessoa administrador primeiro. | |
owner_only |
Só um proprietário pode alterar isto. | |
owner_protected |
Ninguém além do proprietário pode mudar ou remover o proprietário. | |
password_current_wrong |
Sua senha atual não está certa. | |
password_short |
min |
Use uma senha com pelo menos {min} caracteres. |
password_wrong |
Sua senha não está certa. | |
people_owner |
Só o proprietário ou um administrador pode gerenciar pessoas. | |
pick_hub |
O endereço deste hub não é aquele de onde ele se conectou. Conecte o site de novo a partir daqui. | |
pick_origin |
Envie a origem do painel, como https://stats.example.com | |
pick_return |
Envie o endereço do painel seguido de /pick-return, na sua origem, e um nonce de 32 dígitos hexadecimais | |
property_bad |
O Runlight não consegue ler esse nome de propriedade. | |
question_needed |
Faça uma pergunta. | |
range_bad |
Essas datas não formam um período que o Runlight entenda. | |
redirected |
host |
{host} respondeu com um redirecionamento. |
remote_slow |
host |
{host} demorou demais para responder. Tente um período mais curto. |
remove_self |
Você não pode remover a si mesmo. | |
report_exists |
email |
{email} já recebe este relatório. |
report_limit |
Um site pode enviar para no máximo 50 endereços. | |
retention_bad |
months |
Guarde as visitas por {months} meses, ou para sempre. |
role_needed |
Escolha administrador, membro ou leitor. | |
rows_needed |
Envie os links como uma lista de linhas. | |
sample_soon |
Um exemplo acabou de sair. Espere um minuto e tente de novo. | |
sample_soon_hub |
Um hub conectado pode enviar um exemplo a cada dez minutos. Espere alguns minutos e tente de novo. | |
send_json |
Envie isto como JSON. | |
send_object |
Envie um objeto JSON. | |
share_gone |
Este link de compartilhamento não funciona mais. | |
share_not_available |
Isso não está disponível em um painel compartilhado. | |
sign_in |
Faça login primeiro. | |
site_domain_invalid |
host |
"{host}" não é um nome de domínio. |
site_domain_needed |
Adicione o domínio do site, como example.com | |
site_domain_taken |
host, site |
{host} já pertence a {site}. |
site_invalid |
detail |
O site não foi salvo ({detail}). |
site_name |
Um nome de site tem de 1 a 80 caracteres. | |
site_remote |
Este site é contado pelo próprio Runlight. Conecte-o de novo nas configurações dele para alterá-lo daqui. | |
sites_in_code |
Aqui os sites são definidos no código, então são alterados lá. | |
smtp_starttls |
O servidor SMTP não oferece STARTTLS. Escolha TLS ou nenhuma em Segurança. | |
tables_busy |
O Runlight está criando ou atualizando as tabelas dele. Tente de novo em um minuto. | |
test_email |
Digite um e-mail para onde enviar o teste. | |
token_embed_only |
Uma chave do painel só abre o painel dentro de um CMS. | |
token_manage_only |
Um token de gestão só altera as configurações do próprio site. | |
token_name |
Dê um nome ao token. | |
token_read_only |
Tokens de API só podem ler. | |
token_refused |
host |
{host} recusou o token. Conecte-o de novo nas configurações do site. |
token_site |
Um token que altera configurações é para um só site. Escolha o site. | |
token_unset |
Defina RUNLIGHT_TOKEN, ou passe token ou authorize para routes(). Sem isso, o Runlight só fica aberto quando NODE_ENV é development. | |
too_many_tries |
Tentativas demais. Espere quinze minutos e tente de novo. | |
twofactor_off |
Ative primeiro o login em duas etapas. | |
twofactor_restart |
Códigos errados demais. Comece de novo a ativar o login em duas etapas. | |
twofactor_self |
Desative seu próprio login em duas etapas em Conta. | |
unauthorized |
Faça login ou envie um token para ver isto. | |
unknown_account |
Essa conta não existe mais. | |
unknown_dimension |
dimension |
O Runlight não conhece o detalhamento "{dimension}". |
unknown_domain |
Esse domínio não é deste site. | |
unknown_funnel |
Esse funil não existe mais. | |
unknown_goal |
Essa meta não existe mais. | |
unknown_invite |
Esse convite não existe mais. | |
unknown_link |
Esse link não existe mais. | |
unknown_report |
Esse relatório não existe mais. | |
unknown_share |
Esse link de compartilhamento não existe mais. | |
unknown_site |
Esse site não está aqui. | |
unknown_timezone |
timezone |
O Runlight não conhece o fuso horário "{timezone}". |
unknown_token |
Esse token não existe mais. | |
unreachable |
host |
Não foi possível acessar {host}. |