カテゴリ:API

HTTPプロトコルを利用して、Webブラウザを介さずにPukiWikiのページや添付ファイルを操作できる機能。

認証

すべてのリクエスト(auth エンドポイント以外)には、 Authorization ヘッダーに Bearerトークンを含める必要がある。

Authorization: Bearer [TOKEN]

トークン

  • 管理者トークン:管理者用。全権限付与
  • 一時トークン:auth エンドポイントで発行される。有効期限あり

トークン取得

POST /api/v1/auth

管理者パスワードを使用して一時トークンを取得する。

リクエストボディ (JSON):

{
  "password": "管理者パスワード"
}

レスポンス: 200 OK

レスポンス例:

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
  "expires_at": "2026-01-23T12:00:00+00:00",
  "expires_in": 900
}

エンドポイント

ページ一覧取得

GET /api/v1/pages

既存のすべてのページの一覧を取得する。
一時トークンの場合は閲覧権限のあるページのみ。

レスポンス: 200 OK

レスポンス例:

{
  "count": 10,
  "pages": ["FrontPage", "MenuBar", ...]
}

ページ内容取得

GET /api/v1/pages/[ページ名]

指定したページの内容と更新タイムスタンプを取得する。

レスポンス: 200 OK

レスポンス例:

{
  "page": "FrontPage",
  "content": "# FrontPage\n\nWelcome to PukiWiki!",
  "timestamp": 1705891200
}

最近更新されたページ一覧取得

GET /api/v1/recentpages/[件数]

最近更新されたページの名前とタイムスタンプを取得する。
件数を指定しない場合は10件。

レスポンス: 200 OK

レスポンス例:

{
  "count": 10,
  "recent": [
    {
      "page": "FrontPage",
      "timestamp": 1705891200
    },
    ...
  ]
}

添付ファイル一覧取得

GET /api/v1/attachments?page=[ページ名]

指定したページの添付ファイルの一覧を取得する。

レスポンス: 200 OK

レスポンス例:

{
  "page": "FrontPage",
  "count": 2,
  "files": [
    {
      "name": "image.jpg",
      "size": 12345,
      "mtime": 1705891200
    },
    ...
  ]
}

ページ作成

POST /api/v1/pages

新しいページを作成する。

リクエストボディ (JSON):

{
  "page": "NewPage",
  "content": "ページの内容"
}

レスポンス: 201 Created

レスポンス例:

{
  "page": "NewPage"
}

ページ更新

PUT /api/v1/pages/[ページ名]

既存のページを更新する。

リクエストボディ (JSON):

{
  "content": "更新された内容",
  "touch": true
}
  • touch: true の場合、タイムスタンプを更新する (デフォルト: true)

レスポンス: 200 OK

レスポンス例:

{
  "page": "ExistingPage",
  "touch": true
}

ページ削除

DELETE /api/v1/pages/[ページ名]

ページを削除する(空の内容で上書き)。

レスポンス: 200 OK

レスポンス例:

{
  "page": "PageToDelete"
}

エラーレスポンス

エラーが発生した場合、エラーメッセージが返される。

例:

HTTP 401 Unauthorized
{
  "error": "Unauthorized: Invalid token"
}

主なエラーコード:

  • 400: Bad Request(必須パラメータ不足、無効なページ名など)
  • 401: Unauthorized(認証失敗)
  • 403: Forbidden(権限不足)
  • 404: Not Found(ページが存在しない)
  • 409: Conflict(ページが既に存在する)
  • 500: Internal Server Error(サーバーエラー)

注意事項

  • ページ名は PukiWiki の命名規則に従う必要がある。
  • 作成時は page と content が必須。
  • 更新時は content が必須。
  • 一時トークンは15分で有効期限切れ。

コメント

Loading comments…