API、CLI、MCP
プランの制限と同じ条件でアカウントにアクセスする方法を3つ提供しています。
CLI
シンプルなPythonファイル1つで、インストールは不要です。APIを使用します。ターミナルで利用可能で、ダウンしているもののリスト表示、モニターの追加や更新ができます。
お客様のAPIトークン
アカウントのAPI tokensセクションで作成します。一度だけ表示され、指紋のみを保持します。これは組織ではなくあなたに属し、あなたができる以上のことはできません。退職や役割変更時には機能しなくなります。
すべての呼び出しでAuthorization: Bearer n404_...として送信してください。最初に試すべきのは/api/v1/meで、このトークンがどの組織のために動作するのか、どの役割を持つのか、2つのスコープのどちらを持つのかを回答します。2つのアカウントを持つ人は2つのトークンを持ち、環境変数内のどちらかを識別する他の方法はありません。
バージョン1の内容
| 呼び出し | 機能 |
|---|---|
| GET /api/v1/me | このトークンの内容と、それがどの組織のために動作するのか |
| GET /api/v1/monitors | すべてのモニター(古い順) |
| POST /api/v1/monitors | フォームのルールに従って作成 |
| GET /api/v1/monitors/{id} | 1つのモニター |
| PATCH /api/v1/monitors/{id} | 名前、アドレス、間隔、設定の変更、または一時停止 |
| DELETE /api/v1/monitors/{id} | 削除し、その履歴も削除 |
| GET /api/v1/monitors/{id}/status | 現在の動作状況と指定期間の稼働時間 |
| GET /api/v1/groups | すべてのグループと、その中にあるモニターの数 |
| POST /api/v1/groups | 新規作成します。同じ名前が既に存在する場合、そのグループが返されます |
| GET /api/v1/groups/{id} | 1つのグループ |
| PATCH /api/v1/groups/{id} | 名前を変更するか、説明を変更します |
| DELETE /api/v1/groups/{id} | 削除します。そのモニターは削除されず、グループ化されていない状態で残ります |
| GET /api/v1/incidents | 障害情報、新しい順。状態、モニター、または期間でフィルタリング |
| GET /api/v1/incidents/{id} | 1つのインシデントと、それを検知・確認したプローブ |
| GET /api/v1/maintenance | メンテナンスウィンドウとその対象 |
| GET /api/v1/maintenance/{id} | 1つのウィンドウと、その対象となるモニターおよびグループ |
| POST /api/v1/maintenance | 組織のタイムゾーンでスケジュールを設定し、デプロイ前にウィンドウを開けるようにします |
| DELETE /api/v1/maintenance/{id} | 削除します。既に対象となっているものはそのまま維持されます |
| GET /api/v1/status-pages | すべてのステータスページと、その有効/無効の状態 |
| GET /api/v1/status-pages/{id} | 1つのページと、その上に公開されている内容 |
| POST /api/v1/status-pages/{id}/monitors | モニターをページに追加し、閲覧者が読むべき名前の下に配置します |
| DELETE /api/v1/status-pages/{id}/monitors/{id} | このページから削除します。他のページには影響しません |
| POST /api/v1/status-pages/{id}/groups | グループをページに追加します。その中のモニターも一緒に追加されます |
| DELETE /api/v1/status-pages/{id}/groups/{id} | 見出しを削除します。そのモニターは公開されたままです |
パスやボディ内のすべてのidはUUIDです。書き込みには読み取り・書き込みトークンと書き込み可能な役割が必要です。
ドキュメントはOpenAPI 3.1形式です。すべてのコールを記述しています。openapi-generator、oapi-codegenを使用してクライアントを生成できます。
バージョン1は常に拡張されます。フィールドが追加されることはありますが、削除や型変更はありません。新しいバージョンは別のパスとして提供されます。そのため、生成されたクライアントは引き続き動作し、再生成することで新しい変更を反映できます。
クライアントが必要な場合
Python 3.9以降対応のファイル1つで、依存関係はありません。ダウンロードしてトークンを環境に設定してください。APIが行うすべての操作を実行でき、各コマンドは上記ルートへの1回のコールです。
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
N404_TOKENまたはスクリプトの隣にあるnomore404.envファイルからトークンが取得されます。
アシスタント用
アシスタントはModel Context Protocolを通じてこのアカウントを読み取り、変更できます。
1つのアドレス、インストール不要
アシスタントがカスタムコネクタを求める場所にこれを貼り付けてください。サインインと接続先の組織を指定するためにここにリダイレクトされます。それがセットアップのすべてです。
これはあなたとして動作します。すべての呼び出しであなたのロールが読み取られるため、読み取り専用の権限を持つ人が接続した場合、読み取りしかできません。モニター、障害、稼働時間、メンテナンスウィンドウ、グループを読み取り、追加や変更も可能です(モニターやその履歴の削除を含む)。APIトークンからいつでも接続を解除できます。
失敗と長いリスト
1つのエラー形式
ステータスはカテゴリを示します。ボディには、どの失敗であったかがコードと説明文で記載されています。この説明文はリリースごとに変更される可能性があるため、解析に使用しないでください。
{
"error": {
"code": "monitor_not_found",
"message": "Nothing here with that id."
}
}
カーソル、オフセットではありません
リストはitemsとnext_cursorで応答します。カーソルを戻して次のページを取得し、nullになったら停止します。インシデントは読み取り中に到着するため、オフセットでは同じ行が2回表示され、次の行が表示されない可能性があります。
GET /api/v1/incidents?limit=50
GET /api/v1/incidents?limit=50&cursor=...
制限
1分間に1つのトークンで120回の呼び出しが可能です。すべての応答にはRateLimit-RemainingとRateLimit-Resetが含まれているため、適切に動作するクライアントは制限に達する前にペースを調整できます。アカウントが制限を超えると、Retry-Afterを含む429レスポンスが表示されます。