Todas as docs

Início

  1. 01Primeiros passos
  2. 02Instalação
  3. 03Rastreamento

Recursos

  1. 04O painel
  2. 05Metas
  3. 06Links curtos
  4. 07Origens e agentes de IA
  5. 08Relatórios por email
  6. 09Verificação agendada
  7. 10Pergunte à sua IA

Referência

  1. 11Configuração
  2. 12API HTTP

Plataformas

  1. 13Servidor independente
  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

Confiança

  1. 26Privacidade

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}.