API の使い方
ASHIKA Network の API を使うと、お客様パネルでできることの一部を、プログラムから行えます。サーバーの起動・停止・再起動、コンソールへのコマンド送信、ファイルの読み書きができます。
はじめの一歩
-
APIキーを発行する
お客様パネルの 「API」 で、名前を付けてキーを発行します。表示されたキー(
ashk_で始まる文字列)を控えてください。もう一度見ることはできません。 -
サーバーの一覧を取ってみる
キーを
Authorizationヘッダに入れて、サーバーの一覧を取ります。bashcurl https://api.ashikanw.com/v1/servers \ -H "Authorization: Bearer ashk_ここにキー"自分のサーバーの一覧が JSON で返ってくれば成功です。
-
操作してみる
一覧の
id(8 文字)を使って、サーバーを再起動してみます。bashcurl -X POST https://api.ashikanw.com/v1/servers/1a2bc34d/power \ -H "Authorization: Bearer ashk_ここにキー" \ -H "Content-Type: application/json" \ -d '{"signal": "restart"}'
できることの全部は API リファレンス に、よくある使い方は 使い方の例 にあります。
URL
どのエンドポイントも、頭は次の URL です。通信は HTTPS だけです。
https://api.ashikanw.com/v1お客様パネルの https://dash.ashikanw.com/api/v1 も、まったく同じものです。
認証
すべてのリクエストに、APIキーを次の形で付けます。
Authorization: Bearer ashk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx- 触れるのは、キーを発行したアカウントのサーバーだけです。他の人のサーバーの ID を指定しても「見つかりません」になります。
- キーはアカウントのパスワードと同じくらい大切です。プログラムに直接書かず、環境変数や GitHub の Secrets などに入れてください。
- キーが漏れたかもしれないときは、パネルの「API」ですぐに消してください。消したキーはその場で使えなくなります。
サーバーの指定
URL の {id} には、サーバーの 8 文字の ID(例: 1a2bc34d)を入れます。パネルのサーバーの URL(dash.ashikanw.com/servers/…)や、サーバー一覧の API の id で分かります。UUID でも指定できます。
応答の形
うまくいったときは、HTTP の状態が 200 で、中身が data に入って返ります。
{
"data": {
"id": "1a2bc34d",
"name": "my-bot",
"status": "RUNNING"
}
}ファイルの中身(テキストを読む・ダウンロード)だけは、JSON ではなく中身そのものが返ります。
エラー
うまくいかなかったときは、HTTP の状態が 400 番台か 500 番台で、error に理由が入って返ります。code はプログラムで見分けるための英語の名前、message は人が読むための説明です。
{
"error": {
"code": "not_running",
"message": "サーバーが起動していません。"
}
}| 状態 | code | どんなとき |
|---|---|---|
| 400 | invalid_body | 本文が JSON のオブジェクトになっていない |
| 400 | missing_path | 必要な path(または from・to・paths)が無い |
| 400 | invalid_path | サーバーのフォルダの外を指した、フォルダを読もうとした、ディスクの上限を超える、など |
| 400 | invalid_signal | signal が start・stop・restart・kill のどれでもない |
| 400 | invalid_command | command が空、長すぎる、改行を含む |
| 401 | unauthorized | キーが無い、間違っている、消されている |
| 404 | server_not_found | サーバーが無い、または自分のものではない |
| 404 | not_found | ファイル・フォルダが無い、URL が間違っている |
| 409 | power_failed | 起動や停止ができない(期限切れで止められている、準備中など) |
| 409 | not_ready | サーバーの準備がまだ終わっていない |
| 409 | not_running | 止まっているサーバーにコマンドを送ろうとした |
| 413 | too_large | 送ったファイルが 50MB を超えている |
| 429 | rate_limited | 回数の制限を超えた |
| 500 | internal_error | こちら側の問題。時間をおいて試し、続くようなら Discord でお知らせください |
回数の制限
1 つのキーにつき、1 分間に 120 回まで受け付けます。応答のヘッダで、残りの回数が分かります。
| ヘッダ | 内容 |
|---|---|
X-RateLimit-Limit | 1 分間に受け付ける回数(120) |
X-RateLimit-Remaining | この 1 分間の残りの回数 |
Retry-After | 制限を超えたとき(429)だけ。何秒待てばよいか |
状態を見張るときは、数秒〜数十秒おきに取れば十分です。
操作の記録
API で行った操作(起動・停止、コマンド、ファイルの書き込み・名前の変更・削除)は、パネルのサーバーの「アクティビティ」に残ります。覚えのない操作があれば、キーを消して作り直してください。
できないこと
今の API では、サーバーの購入・延長・削除、プランの変更、残高のチャージはできません。お金や消えると困るものに関わる操作は、お客様パネルから行ってください。ほしい機能があれば Discord で教えてください。