Pular para o conteúdo

API do site

O site harness.neuros.my tem algumas rotas pensadas para scripts e automações: a versão atual em JSON, uma verificação de saúde, os scripts do instalador e os downloads do app. Use esta página quando precisar dessas rotas fora do navegador.

Rota Resposta
GET /api/latest Versão atual, downloads e comandos de instalação, em JSON
GET /api/health Verificação de saúde, em JSON
GET /install.sh Script do instalador para macOS e Linux
GET /install.ps1 Script do instalador para Windows
GET /download/mac Redireciona para o .dmg da última Release
GET /download/windows Redireciona para o .exe da última Release
GET /api/auth/config, GET /api/me Estado do login (Clerk) e a sessão atual
POST /api/acesso, GET /api/conta Pedido de acesso, estado da conta e chaves
GET /api/pacotes/<pacote>/<versão>, GET /api/app/mac|windows Pacotes e app com Authorization: Bearer nh_…
/api/dispositivo/* Fluxo de dispositivo do neuro-harness entrar
  • URL base: https://harness.neuros.my
  • Métodos: GET, HEAD e POST (nas rotas de conta, acesso, dispositivo e admin). Outros métodos recebem 405.
  • HTTPS: pedidos em HTTP são redirecionados para HTTPS com 301.
  • Autenticação: as rotas de conta usam a sessão do Clerk; as de pacotes usam a chave de instalação nh_… no cabeçalho Authorization: Bearer.
  • CORS: as respostas JSON têm Access-Control-Allow-Origin: *.

Devolve a versão atual do Neuro Harness, os arquivos do app e os comandos de instalação. A resposta tem Cache-Control: public, max-age=60.

Terminal
curl -s https://harness.neuros.my/api/latest
{
"name": "Neuro Harness",
"version": "0.2.1",
"tag": "v0.2.1",
"publishedAt": "2026-11-08T18:42:23Z",
"deepseekHarness": "0.2.1-alpha.2",
"engine": {
"name": "neuro-mv-edit",
"version": "1.8.0"
},
"downloads": {
"mac": {
"file": "Neuro-Harness-0.2.1-arm64.dmg",
"size": 130392655,
"url": "https://harness.neuros.my/download/mac"
},
"windows": {
"file": "Neuro-Harness-Setup-0.2.1.exe",
"size": 119748902,
"url": "https://harness.neuros.my/download/windows"
}
},
"install": {
"sh": "https://harness.neuros.my/install.sh",
"ps1": "https://harness.neuros.my/install.ps1",
"unix": "curl -fsSL https://harness.neuros.my/install.sh | bash",
"windows": "irm https://harness.neuros.my/install.ps1 | iex"
},
"docs": "https://h-docs.neuros.my",
"notes": "https://h-docs.neuros.my/projeto/novidades",
"source": "build"
}
Campo Tipo O que é
name string Sempre Neuro Harness
version string Versão da distribuição, sem o v
tag string Tag da Release, com o v
publishedAt string Data de publicação da Release, em ISO 8601 (UTC)
deepseekHarness string ou null Versão do DeepSeek Harness fixada nessa versão
engine objeto ou null Motor de edição: name e version
downloads.mac, downloads.windows objeto ou null file (nome do arquivo), size (bytes) e url (rota de download do site)
install.sh, install.ps1 string Endereço dos scripts do instalador
install.unix, install.windows string Comando de instalação de uma linha, pronto para copiar
notes string Endereço das notas da versão
source string De onde vieram os dados: build ou github

Sobre source:

  • build: os dados foram gravados no site na última publicação dele.
  • github: o site consultou a última Release no GitHub. O resultado fica em cache por 10 minutos.

Quando a Release do GitHub é mais nova que os dados do build, deepseekHarness e engine vêm como null.

Exemplo: ler só a versão.

Terminal
curl -s https://harness.neuros.my/api/latest | jq -r .version
PowerShell
(Invoke-RestMethod https://harness.neuros.my/api/latest).version

Verificação de saúde. Responde 200 com o JSON abaixo, sem cache (Cache-Control: no-store).

Terminal
curl -s https://harness.neuros.my/api/health
{
"ok": true,
"version": "0.2.1",
"auth": true,
"store": "postgres",
"docs": true
}
Campo Tipo O que é
ok boolean true quando o site está no ar
version string Versão do Neuro Harness gravada no build do site
auth boolean true quando o login com Clerk está ligado
store string postgres com DATABASE_URL, senão memory
docs boolean true quando a documentação foi gerada no build

Devolvem os scripts do instalador como texto (text/plain; charset=utf-8).

  • Origem: a branch main do repositório público neuro-harness-install.
  • Cache: o site busca os scripts no GitHub a cada 5 minutos. A resposta tem Cache-Control: public, max-age=300.
  • Reserva: se o GitHub não responder, o site serve a cópia gravada no build.
Terminal
curl -fsSL https://harness.neuros.my/install.sh -o install.sh

Para instalar, use os comandos de Instalação.

Redirecionam (302) para o instalador do app na última Release: o .dmg para Apple Silicon ou o .exe para Windows x64. As respostas têm Cache-Control: no-store.

Situação Destino do redirecionamento
Hoje O arquivo na página de Releases do GitHub. Só abre para contas com acesso ao repositório
Site com token de leitura do GitHub Um link temporário e assinado do GitHub, aberto a qualquer visitante
Release sem o arquivo 404
Terminal
curl -sI https://harness.neuros.my/download/mac
HTTP/2 302
cache-control: no-store
location: https://github.com/monrars1995/neuro-harness/releases/download/v0.2.1/Neuro-Harness-0.2.1-arm64.dmg

Com o login ligado, /download/mac e /download/windows exigem uma conta com acesso aprovado: quem não entrou vai para /entrar, e quem aguarda aprovação vai para /conta.

  • GET /api/auth/config: diz se o login está ligado e entrega a chave pública do Clerk ao navegador.
  • GET /api/me: a conta da sessão atual (nome, e-mail, se é administração e o estado do acesso), ou 401 sem sessão.
  • POST /api/acesso: cria o pedido de acesso (nome, WhatsApp opcional, sistema e uso pretendido), com a sessão do Clerk.
  • GET /api/conta: o pedido e as chaves da conta. POST /api/conta/chave gera uma chave nh_… — o texto aparece uma vez só; o servidor guarda apenas o hash SHA-256. POST /api/conta/chave/<id>/revogar revoga uma chave.
  • GET /api/pacotes/<pacote>/<versão> e GET /api/app/mac|windows: pacotes dos repositórios privados (neuro-harness, neuro-mv-edit, neuro-ads-manager) e o app, com Authorization: Bearer nh_…. A resposta redireciona para um link temporário do GitHub; cada download fica registrado. Chave inválida ou revogada recebe 401.
  • /api/dispositivo/*: a máquina pede um código (POST /api/dispositivo/codigo), o usuário confirma em /conectar com a conta aprovada, e a máquina resgata a chave uma única vez (POST /api/dispositivo/resgatar). O código expira em 10 minutos.
Código Quando
200 Resposta normal
301 Pedido em HTTP, ou em outro endereço do site, redirecionado para https://harness.neuros.my
302 Rotas de download
304 O conteúdo não mudou (If-None-Match igual ao ETag)
404 Rota ou arquivo inexistente
405 Método não permitido na rota
500 Erro interno