Saltar para o conteúdo

API, CLI e MCP

Oferecemos três formas de aceder à tua conta, com os mesmos limites do teu plano.

API

REST, a partir de um pipeline, um script ou as tuas próprias ferramentas. Um token que emites e revogas tu mesmo.

A API

CLI

Um ficheiro Python simples, sem necessidade de instalar nada. Usa a API. Pode ser usado por alguém num terminal: listar o que está offline, adicionar ou atualizar monitores.

O cliente de linha de comandos

MCP

Via o MCP-server podes permitir que o Claude ou qualquer coisa que fale o protocolo que o agente entende leia a tua conta e faça alterações, como tu, numa conversa.

Para um assistente

O teu token API

Cria um em API tokens na tua conta. É mostrado uma vez, guardamos apenas uma impressão digital dele, e pertence a ti e não à organização: não pode fazer mais do que tu podes, e deixa de funcionar se saíres ou o teu papel mudar.

Envia-o como Authorization: Bearer n404_... em cada chamada. A primeira que vale a pena fazer é /api/v1/me, que responde por qual organização o token age, qual papel carrega e qual dos dois escopos tem: uma pessoa com duas contas tem dois tokens e nenhuma outra forma de saber qual está numa variável de ambiente.

O que está na versão 1

Chamada O que faz
GET /api/v1/me O que este token é e por qual organização age
GET /api/v1/monitors Todos os monitores, do mais antigo para o mais recente
POST /api/v1/monitors Cria um, seguindo as mesmas regras que o formulário obedece
GET /api/v1/monitors/{id} Um monitor
PATCH /api/v1/monitors/{id} Altera o nome, endereço, intervalo ou configuração, ou pausa-o
DELETE /api/v1/monitors/{id} Apaga-o, e o seu histórico com ele
GET /api/v1/monitors/{id}/status O que está a fazer agora, e o seu uptime ao longo de uma janela
GET /api/v1/groups Cada grupo, com quantos monitores estão nele
POST /api/v1/groups Cria um; um nome que já existe devolve o grupo que o tem
GET /api/v1/groups/{id} Um grupo
PATCH /api/v1/groups/{id} Renomeia-o ou altera a sua descrição
DELETE /api/v1/groups/{id} Apaga-o. Os seus monitores ficam, sem grupo
GET /api/v1/incidents Falhas, mais recentes primeiro, filtradas por estado, monitor ou período
GET /api/v1/incidents/{id} Um incidente, com os probes que o viram e confirmaram
GET /api/v1/maintenance Janelas de manutenção e o que cobrem
GET /api/v1/maintenance/{id} Uma janela, com os monitores e grupos que cobre
POST /api/v1/maintenance Agenda uma, no horário da tua organização, para que um deploy possa abrir uma janela antes de começar
DELETE /api/v1/maintenance/{id} Apaga-a. O que já cobria continua coberto
GET /api/v1/status-pages Cada página de estado, e se está ativada
GET /api/v1/status-pages/{id} Uma página, e o que está publicado nela
POST /api/v1/status-pages/{id}/monitors Coloca um monitor na página, com o nome que o público deve ler
DELETE /api/v1/status-pages/{id}/monitors/{id} Remove-o desta página. Outras páginas mantêm-no
POST /api/v1/status-pages/{id}/groups Coloca um grupo na página; os monitores nele também vêm
DELETE /api/v1/status-pages/{id}/groups/{id} Remove o cabeçalho. Os seus monitores continuam publicados

Cada id num caminho ou corpo é o UUID. Escrever requer um token de leitura e escrita e um papel que permita escrever.

openapi.json

O documento está no formato OpenAPI 3.1. Descreve cada chamada. Podes usá-lo para gerar um cliente com openapi-generator, oapi-codegen.

A versão 1 só cresce: um campo pode ser adicionado, nenhum é removido ou reescrito, e uma segunda versão seria um segundo caminho. Assim, um cliente gerado continua a funcionar, e regenerá-lo é como apanhas o que é novo.

Um cliente, se quiseres um

Um ficheiro, Python 3.9 ou mais recente, sem dependências. Faz o download e coloca o teu token no ambiente. Faz tudo o que a API faz, porque cada comando é uma chamada às rotas acima.

nomore404.py

curl -O https://nomore404.com/api/nomore404.py
curl -s https://nomore404.com/api/nomore404.py.sha256 | sha256sum -c
chmod +x nomore404.py
export N404_TOKEN=n404_...

./nomore404.py monitors list
./nomore404.py monitors add --type https --target shop.example.com
./nomore404.py incidents --state open

O token vem de N404_TOKEN ou de um ficheiro nomore404.env ao lado do script.

Para um assistente

Um assistente pode ler esta conta e alterá-la, através do Model Context Protocol.

Um endereço, nada para instalar

Cola isto onde o teu assistente pedir um conector personalizado. Vai enviar-te aqui para fazer login e dizer para que organização é a ligação, e isso é toda a configuração.

Age como tu: a tua função é lida em cada chamada, então um assistente ligado por alguém que só pode ler só pode ler. Lê monitores, falhas, uptime, janelas de manutenção e grupos, e pode adicioná-los e alterá-los, o que inclui apagar um monitor e o histórico com ele. Desliga-o quando quiseres em Tokens da API, onde está listado ao lado deles.

Falhas e listas longas

Um formato de erro

O status indica a categoria. O corpo indica qual foi a falha, com um código para ramificar e uma frase para ler. A frase pode ser reformulada em qualquer versão, então nada deve analisá-la.

{
  "error": {
    "code": "monitor_not_found",
    "message": "Nothing here with that id."
  }
}

Cursors, não offsets

Uma listagem responde com items e next_cursor. Passa o cursor de volta para obter a próxima página e para quando for null. Incidentes chegam enquanto os estás a ler, e um offset mostraria silenciosamente uma linha duas vezes e nunca mostraria a próxima.

GET /api/v1/incidents?limit=50
GET /api/v1/incidents?limit=50&cursor=...

Limites

Um token pode fazer 120 chamadas por minuto. Cada resposta inclui RateLimit-Remaining e RateLimit-Reset, para que um cliente responsável possa gerir o ritmo em vez de descobrir o limite ao ultrapassá-lo. Quando a conta excede o limite, vais ver uma resposta 429 com Retry-After.

Cria uma conta grátis