Show page source of API #51492

[[PageOutline]]

== bbs.cgi ==

パラメータに js=1 または xml=1 をつけるとそれぞれ JSON または XML 形式で返ってきます。
成功または失敗したか判断をするには ok の値が 1 であるかどうかを確認すればよいです。

 * js=1 で書き込みに成功した場合
{{{ code javascript
{
  error => '',
  errstr => '',
  ok => 1
}
}}}
 * xml=1 で書き込みに成功した場合
{{{ code xml
<response>
  <error></error>
  <errstr></errstr>
  <ok>1</ok>
</response>
}}}
 * js=1 で書き込みに失敗した場合の一例
{{{ code javascript
{
  error => 'INVALID_POST',
  errstr => 'フォーム情報が正しく読めないです。',
  ok => 0
}
}}}
 * xml=1 で書き込みに失敗した場合の一例
{{{ code xml
<response>
  <error>INVALID_POST</error>
  <errstr>フォーム情報が正しく読めないです。</errstr>
  <ok>0</ok>
</response>
}}}

== upload.csv ==

アップロードされたファイル情報を収めたCSVファイル。サムネイル表示可能数 = 行数のため、
全てのアップロードされたファイル情報を取得することは出来無い。また、拡張である
Img0ch::Plugin::Upload::XCSV が有効な掲示板に限るため、あまり有用ではない。

 * パス
{{{
/[掲示板ディレクトリ]/img/[スレッドキー]/upload.csv
}}}

 * 形式
{{{ code csv
[レス番号],[拡張子],[元画像の幅],[元画像の高さ],[ファイルのMD5値],[サムネイルの幅],[サムネイルの高さ]
}}}

== 現在実装を予定している API (策定中) ==

 * REST 形式
 * 成功か失敗かは HTTP のステータスコードを見る必要がある
   * 200 (更新系は 201) が成功
   * クライアントのリクエストに問題がある場合は 4xx 系を返す
 * メソッド名はパラメータ名 _method で代用可能
 * #{variable} は変数を表す
   * #{bbs} は掲示板のディレクトリ
   * #{thread} はスレッドキー
   * #{resno} はレス番号
   * #{plugin} はプラグイン ID

=== GET /api/plugins ===
プラグイン一覧を取得する

=== PUT /api/plugin/#{plugin} ===
プラグインの有効無効をシステムレベルで設定する

=== PUT /api/banner/main ===
掲示板のバナーを更新する

=== PUT /api/banner/sub ===
掲示板のサブバナーを更新する

=== GET /api/#{bbs}/pooled ===
プール済みのスレッド一覧を取得する

=== GET /api/#{bbs}/archived ===
過去ログに変換済みのスレッド一覧を取得する

=== GET /api/#{bbs}/setting/main ===
主要設定を取得する

=== GET /api/#{bbs}/setting/design ===
デザイン設定を取得する

=== GET /api/#{bbs}/setting/restriction ===
制限設定を取得する

=== GET /api/#{bbs}/setting/others
その他の設定を取得する

=== GET /api/#{bbs}/setting/img0ch
img0ch 特有の設定を取得する

=== GET /api/#{bbs}/errors ===
エラーログを取得する

=== GET /api/#{bbs}/hosts ===
スレッドログを取得する

=== GET /api/#{bbs}/plugins ===
プラグイン一覧を取得する

=== PUT /api/#{bbs}/header ===
掲示板のヘッダーを更新する

=== PUT /api/#{bbs}/meta ===
掲示板のメタデータを更新する

=== PUT /api/#{bbs}/footer ===
掲示板のフッターを更新する

=== PUT /api/#{bbs}/plugins/#{plugin} ===
プラグインの有効無効を掲示板レベルで設定する

=== GET /api/#{bbs}/#{thread}/setting ===
仮想スレッドの設定を取得する

=== GET /api/#{bbs}/#{thread}/access ===
仮想スレッドのアクセス設定を取得する

=== GET /api/#{bbs}/#{thread}/ngword ===
仮想スレッドのNGワード設定を取得する

=== GET /api/#{bbs}/#{thread/tags ===
タグ一覧を取得する

=== GET /api/#{bbs}/#{thread}/ngtags ===
NGタグ一覧を取得する

=== PUT /api/#{bbs}/#{thread}/ngtags ===
NGタグを更新する

=== PUT /api/#{bbs}/#{thread}/stop ===
スレッドを停止する

=== PUT /api/#{bbs}/#{thread}/restart ===
スレッドを再開する

=== PUT /api/#{bbs}/#{thread}/setting ===
仮想スレッドの設定を更新する

=== PUT /api/#{bbs}/#{thread}/access ===
仮想スレッドのアクセス設定を更新する

=== PUT /api/#{bbs}/#{thread}/ngword ===
仮想スレッドのNGワード設定を更新する

=== DELETE /api/#{bbs}/#{thread} ===
指定されたスレッドを削除する

=== PUT /api/#{bbs}/#{thread}/#{resno} ===
指定されたレスを編集する

=== PUT /api/#{bbs}/#{thread}/#{resno}/freeze ===
指定されたレスに添付されたファイルを凍結させる

=== PUT /api/#{bbs}/#{thread}/#{resno}/release ===
指定されたレスに添付されたファイルを復活させる

=== DELETE /api/#{bbs}/#{thread}/#{resno} ===
指定されたレスを通常削除する

=== DELETE /api/#{bbs}/#{thread}/#{resno}/erase ===
指定されたレスを透明削除する

=== DELETE /api/#{bbs}/#{thread}/#{resno}/fileonly ===
指定されたレスに添付されたファイルのみを削除する

=== DELETE /api/#{bbs}/#{thread}/pool ===
指定されたプールスレッドを削除する

=== DELETE /api/#{bbs}/#{thread}/archive ===
指定された過去ログを削除する

=== 実装戦略 ===

これらは Zeromin2::App::* にあるものを土台とする。Zeromin2::App のふりをする
モジュール (Zeromin2::API) を作って入力と出力のみを加工する。また、
セッションを作成するAPIを実装する予定は無いので、ユーザ名とパスワードは毎回要求する。