REST API

Last-modified: 2022-08-09 (火) 19:07:32

Web ブラウザを使わずに Wiki ページの読み書きを行うことができます。
プログラムの知識が必要です。

https://api.wikiwiki.jp/<wiki-name>/...

<wiki-name> 部分に操作対象の wiki の名前(ID)を指定します。

認証

POST https://api.wikiwiki.jp/<wiki-name>/auth

他の操作を行うためのトークンを得ることができます。

使用例

curl -X POST "https://api.wikiwiki.jp/<wiki-name>/auth" \
-H "Content-Type: application/json" \
-d "{\"password\": \"passw0rd\"}"

password フィールドのある JSON オブジェクトをリクエストボディに指定します。
Content-Type は application/json でなければなりません。
パスワードには管理者パスワードを使用します。
[tip] サブ・パスワードは使用できません。

結果

{
  "status": "ok",
  "token": "eyJ0eXA..."
}

ページ一覧

GET https://api.wikiwiki.jp/<wiki-name>/pages

ページリストを取得します。

使用例

curl "https://api.wikiwiki.jp/<wiki-name>/pages" \
-H "Authorization: Bearer eyJ0eXA..."

/auth で得られた token フィールドの内容を Authorization ヘッダに Bearer で指定します。

結果

{
  "pages": [
    {
      "name": ":config",
      "timestamp": "2022-01-01T00:00:00+09:00"
    },
    {
      "name": "FrontPage",
      "timestamp": "2022-01-01T00:00:00+09:00"
    },
    ...
  ]
}

ページ取得

GET https://api.wikiwiki.jp/<wiki-name>/page/<page-name>

ページ内容を取得します。

使用例

curl "https://api.wikiwiki.jp/<wiki-name>/page/FrontPage" \
-H "Authorization: Bearer eyJ0eXA..."

/auth で得られた token フィールドの内容を Authorization ヘッダに Bearer で指定します。

結果

{
  "page": "FrontPage",
  "source": "TITLE:FrontPage(お好きなタイトルに変更して下さい)\n...",
  "timestamp": "2022-01-01T00:00:00+09:00"
}

ページ書き込み

PUT https://wikiwiki.jp/<wiki-name>/page/<page-name>

ページ内容を書き込みます。

使用例

curl -X PUT "https://api.wikiwiki.jp/<wiki-name>/page/TestPage" \
-H "Authorization: Bearer eyJ0eXA..." \
-H "Content-Type: application/json" \
-d "{\"source\": \"テストページです\"}"

/auth で得られた token フィールドの内容を Authorization ヘッダに Bearer で指定します。
source フィールドのある JSON オブジェクトをリクエストボディに指定します。
Content-Type は application/json でなければなりません。

結果

{
  "status": "ok"
}

レートリミット

ひとつの Wiki あたり 1 時間に 2000 回のオペレーションが上限です。
また 1 分間に 120 回を超えるペースでのオペレーションはできません。

レートリミットは Wiki への操作の合計回数にかかります。トークンあたりの回数ではないのでご注意ください。

できそうなこと

  • 記事の差分バックアップ
  • 記事のリストア
  • Googleスプレッドシートのデータから自動更新
  • 外部データからランキングを作成し自動更新
  • コメントからデータを集計して表を作成し自動更新

既にボットを使って自動更新されている方

既にボットを使って自動更新されている方はこの REST API を使用して下さい。
[tip] DoS攻撃や暴走したボットによる負荷対策のため、ボットによるアクセスは制限させていただきます。

公開スクリプト

こちらに有志の方の公開スクリプトを掲載します。