#author("2026-01-24T04:26:05+09:00","default:kanateko","kanateko")
#author("2026-01-24T04:29:10+09:00","default:kanateko","kanateko")
&tag(API);
HTTPプロトコルを利用して、Webブラウザを介さずにPukiWikiのページや添付ファイルを操作できる機能。
HTTPプロトコルを利用して、Webブラウザを介さずにWikiのページや添付ファイルを操作できる機能。
#contentsx
* 認証 [#auth]
すべてのリクエスト(auth エンドポイント以外)には、 Authorization ヘッダーに Bearerトークンを含める必要がある。
Authorization: Bearer [TOKEN]
''トークン''
- 管理者トークン:管理者用。全権限付与
- 一時トークン:auth エンドポイントで発行される。有効期限あり
** トークン取得 [#token]
POST /api/v1/auth
管理者パスワードを使用して一時トークンを取得する。
''リクエストボディ (JSON):''
#prism(json){{
{
"password": "管理者パスワード"
}
}}
''レスポンス:'' 200 OK
''レスポンス例:''
#prism(json){{
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
"expires_at": "2026-01-23T12:00:00+00:00",
"expires_in": 900
}
}}
* エンドポイント [#ic5eef3e]
** ページ一覧取得 [#pages]
GET /api/v1/pages
既存のすべてのページの一覧を取得する。
一時トークンの場合は閲覧権限のあるページのみ。
''レスポンス:'' 200 OK
''レスポンス例:''
#prism(json){{
{
"count": 10,
"pages": ["FrontPage", "MenuBar", ...]
}
}}
** ページ内容取得 [#page]
GET /api/v1/pages/[ページ名]
指定したページの内容と更新タイムスタンプを取得する。
''レスポンス:'' 200 OK
''レスポンス例:''
#prism(json){{
{
"page": "FrontPage",
"content": "# FrontPage\n\nWelcome to PukiWiki!",
"timestamp": 1705891200
}
}}
** 最近更新されたページ一覧取得 [#recent]
GET /api/v1/recentpages/[件数]
最近更新されたページの名前とタイムスタンプを取得する。
件数を指定しない場合は10件。
''レスポンス:'' 200 OK
''レスポンス例:''
#prism(json){{
{
"count": 10,
"recent": [
{
"page": "FrontPage",
"timestamp": 1705891200
},
...
]
}
}}
** 添付ファイル一覧取得 [#attachments]
GET /api/v1/attachments?page=[ページ名]
指定したページの添付ファイルの一覧を取得する。
''レスポンス:'' 200 OK
''レスポンス例:''
#prism(json){{
{
"page": "FrontPage",
"count": 2,
"files": [
{
"name": "image.jpg",
"size": 12345,
"mtime": 1705891200
},
...
]
}
}}
** ページ作成 [#create]
POST /api/v1/pages
新しいページを作成する。
''リクエストボディ (JSON):''
#prism(json){{
{
"page": "NewPage",
"content": "ページの内容"
}
}}
''レスポンス:'' 201 Created
''レスポンス例:''
#prism(json){{
{
"page": "NewPage"
}
}}
** ページ更新 [#update]
PUT /api/v1/pages/[ページ名]
既存のページを更新する。
''リクエストボディ (JSON):''
#prism(json){{
{
"content": "更新された内容",
"touch": true
}
}}
- touch: true の場合、タイムスタンプを更新する (デフォルト: true)
''レスポンス:'' 200 OK
''レスポンス例:''
#prism(json){{
{
"page": "ExistingPage",
"touch": true
}
}}
** ページ削除 [#delete]
DELETE /api/v1/pages/[ページ名]
ページを削除する。
''レスポンス:'' 200 OK
''レスポンス例:''
#prism(json){{
{
"page": "PageToDelete"
}
}}
* エラーレスポンス [#error]
エラーが発生した場合、エラーメッセージが返される。
''例:''
#prism(json){{
HTTP 401 Unauthorized
{
"error": "Unauthorized: Invalid token"
}
}}
''主なエラーコード:''
- 400: Bad Request(必須パラメータ不足、無効なページ名など)
- 401: Unauthorized(認証失敗)
- 403: Forbidden(権限不足)
- 404: Not Found(ページが存在しない)
- 409: Conflict(ページが既に存在する)
- 500: Internal Server Error(サーバーエラー)
* 注意事項 [#a0949fc8]
- ページ名は PukiWiki の命名規則に従う必要がある。
- 作成時は page と content が必須。
- 更新時は content が必須。
- 一時トークンは15分で有効期限切れ。
*コメント [#comment]
#mcomment