Salta al contenuto

API, CLI e MCP

Offriamo tre modi per accedere al tuo account, con gli stessi limiti del tuo piano.

API

REST, da una pipeline, uno script o i tuoi strumenti. Un token che emetti e revochi tu stesso.

L'API

CLI

Un semplice file Python, niente da installare. Usa l'API. Può essere usato da qualcuno al terminale: elenca cosa è offline, aggiungi o aggiorna monitor.

Il client a riga di comando

MCP

Tramite il server MCP puoi permettere a Claude o a qualsiasi cosa che parli il protocollo che l'agente legge di accedere al tuo account e fare modifiche, come te, in una conversazione.

Per un assistant

Il tuo token API

Creane uno sotto API tokens nel tuo account. Viene mostrato una sola volta, conserviamo solo un'impronta di esso, e appartiene a te piuttosto che all'organizzazione: non può fare più di quanto puoi fare tu, e smette di funzionare se lasci o il tuo ruolo cambia.

Invialo come Authorization: Bearer n404_... in ogni chiamata. La prima che vale la pena fare è /api/v1/me, che risponde per quale organizzazione agisce il token, quale ruolo ha e quale dei due ambiti possiede: una persona con due account ha due token e nessun altro modo per sapere quale è in una variabile d'ambiente.

Cosa c'è nella versione 1

Chiamata Cosa contiene
GET /api/v1/me Cosa è questo token e per quale organizzazione agisce
GET /api/v1/monitors Ogni monitor, dal più vecchio
POST /api/v1/monitors Creane uno, seguendo le stesse regole del modulo
GET /api/v1/monitors/{id} Un monitor
PATCH /api/v1/monitors/{id} Cambia il suo nome, indirizzo, intervallo o configurazione, o mettilo in pausa
DELETE /api/v1/monitors/{id} Eliminalo, e la sua cronologia con esso
GET /api/v1/monitors/{id}/status Cosa sta facendo ora e il suo uptime su una finestra
GET /api/v1/groups Ogni gruppo, con quanti monitor ci sono dentro
POST /api/v1/groups Creane uno; un nome che esiste restituisce il gruppo che lo ha
GET /api/v1/groups/{id} Un gruppo
PATCH /api/v1/groups/{id} Rinominalo o cambia la sua descrizione
DELETE /api/v1/groups/{id} Eliminalo. I suoi monitor restano, non raggruppati
GET /api/v1/incidents Interruzioni, le più recenti per prime, filtrate per stato, monitor o periodo
GET /api/v1/incidents/{id} Un incidente, con i probe che lo hanno visto e confermato
GET /api/v1/maintenance Finestre di manutenzione e cosa coprono
GET /api/v1/maintenance/{id} Una finestra, con i monitor e i gruppi che copre
POST /api/v1/maintenance Programmane una, sull'orologio della tua organizzazione, così un deploy può aprire una finestra prima di iniziare
DELETE /api/v1/maintenance/{id} Eliminala. Ciò che copriva resta coperto
GET /api/v1/status-pages Ogni status page, e se è attiva
GET /api/v1/status-pages/{id} Una pagina, e cosa è pubblicato su di essa
POST /api/v1/status-pages/{id}/monitors Metti un monitor sulla pagina, sotto il nome che il pubblico dovrebbe leggere
DELETE /api/v1/status-pages/{id}/monitors/{id} Rimuovilo da questa pagina. Le altre pagine lo mantengono
POST /api/v1/status-pages/{id}/groups Metti un gruppo sulla pagina; i monitor al suo interno vengono inclusi
DELETE /api/v1/status-pages/{id}/groups/{id} Rimuovi l'intestazione. I suoi monitor restano pubblicati

Ogni id in un percorso o in un corpo è l'UUID. Scrivere richiede un token di lettura e scrittura e un ruolo che possa scrivere.

openapi.json

Il documento è nel formato OpenAPI 3.1. Descrive ogni chiamata. Puoi usarlo per generare un client con openapi-generator, oapi-codegen.

La versione 1 cresce solo: un campo può essere aggiunto, nessuno viene rimosso o ritipizzato, e una seconda versione sarebbe un secondo path. Quindi un client generato continua a funzionare, e rigenerarlo è come acquisire le novità.

Un client, se ne vuoi uno

Un file, Python 3.9 o più recente, senza dipendenze. Scaricalo e metti il tuo token nell'ambiente. Fa tutto ciò che fa l'API, perché ogni comando è una chiamata alle route sopra.

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

Il token proviene da N404_TOKEN o da un file nomore404.env accanto allo script.

Per un assistant

Un assistant può leggere questo account e modificarlo tramite il Model Context Protocol.

Un indirizzo, niente da installare

Incolla questo dove il tuo assistant chiede un connettore personalizzato. Ti invierà qui per accedere e per dire a quale organizzazione è destinata la connessione, e questa è tutta la configurazione.

Agisce come te: il tuo ruolo viene letto a ogni chiamata, quindi un assistant connesso da qualcuno che può solo leggere può solo leggere. Legge monitor, interruzioni, uptime, finestre di manutenzione e gruppi, e può aggiungerli e modificarli, il che include eliminare un monitor e la sua cronologia. Disconnettilo quando vuoi da Token API, dove è elencato accanto a loro.

Errori e lunghe liste

Una forma di errore

Lo status indica la categoria. Il body dice quale errore è stato, con un codice su cui ramificare e una frase da leggere. La frase può essere riformulata in qualsiasi release, quindi nulla dovrebbe analizzarla.

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

Cursori, non offset

Un elenco risponde con items e next_cursor. Passa il cursore indietro per ottenere la pagina successiva e fermati quando è null. Gli incidenti arrivano mentre li stai leggendo, e un offset mostrerebbe silenziosamente una riga due volte e mai la successiva.

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

Limiti

Un token può effettuare 120 chiamate al minuto. Ogni risposta include RateLimit-Remaining e RateLimit-Reset, così un client ben configurato può regolarsi invece di scoprire il limite superandolo. Quando l'account supera il limite, vedrai una risposta 429 con Retry-After.

Crea un account gratuito