Index操作API
インデックス作成API
目的・用途
新規インデックスを作成する際に使用するAPIである
利用方法
Scopeに「index:create」をもつアクセストークンを使用してAPIを呼び出す
| Method | HTTP request | Description |
|---|---|---|
| create_index | POST /api/indextree/create |
パラメータは以下の内容のjsonとする
| Parameter name | Value | Description |
|---|---|---|
| Path parameters | ||
| parent_id | 数値 | 親インデックスのID |
| index_info | json | 必須。以下の項目のうち少なくとも1つが必要 |
| index_info.index_name | 文字列 | 日本語のインデックス名 |
| index_info.index_name_english | 文字列 | 英語のインデックス名 |
| index_info.comment | 文字列 | コメント |
| index_info.public_state | 真偽値 | 公開設定 |
| index_info.harvest_public_state | 真偽値 | ハーベスト公開設定 |
curlによるリクエスト例
$ curl https://ホスト/api/indextree/create -H "Authorization:Bearer アクセストークン" -H "Content-Type: application/json" \
-d '{"parent_id":"0","index_info":{"index_name":"APIテスト","index_name_english":"API test","comment":"コメント","public_state":false,"public_state":false}}'
利用可能なロール
| ロール | システム 管理者 |
リポジトリ 管理者 |
コミュニティ 管理者 |
登録ユーザー | 一般ユーザー | ゲスト (未ログイン) |
|---|---|---|---|---|---|---|
| 利用可否 | ○ | ○ | ○ | ○ | ○ |
機能内容
以下を指定してインデックスを新規作成する
- 親インデックス
指定されなかった場合はRoot Index直下に作成される
日本語のインデックス名
英語のインデックス名
各インデックス名は、指定されなかった場合は「New Index」が設定される
コメント
公開設定
指定されなかった場合は「False」が設定される
- ハーベスト公開設定
指定されなかった場合は「True」が設定される
関連モジュール
- weko_index_tree
処理概要
Scope:
- weko- index-tree /weko_ index_tree /scopes.py
API:
- modules/weko-index-tree/weko_index_tree/views.py
create_index関数でindexテーブルに新規インデックスを作成する
- 以下の情報を用いてインデックスを新規作成する
id:作成時のUNIX時間を1000倍したものを用いる
parent_id:パラメータで指定されなかった場合には0を設定する
index_name:「New Index」固定
作成したインデックスを、index_infoの内容を用いてupdateする
作成が成功すると、以下の内容のレスポンスが返却される
Indexes.updateメソッドの返却値をjson形式にエンコードしたものをレスポンスボディに入れようとする
しかし、updateメソッドの返却値はNoneなので、実際に入るのはエラーメッセージ「'NoneType' object is not iterable」である
パラメータとして空のjsonを渡した場合は、400エラーとなりエラーメッセージ「No data to create.」が返却される
index_infoが空だった場合は、400エラーとなりエラーメッセージ「index_info can not be null.」が返却される
インデックス管理API
目的・用途
管理者の権限を以て、インデックスを取得・作成・更新・削除する機能を提供するAPIである。
利用方法
APIの認証にはOAuth2を利用する。
アクセストークンの発行はAPI-1:OAuth2を参照。
API一覧
| 項番 | HTTP Method | エンドポイント | Description |
|---|---|---|---|
| 1 | GET | /api/\ |
全インデックスの情報を取得する |
| 2 | GET | /api/\ |
指定したインデックスの情報を取得する |
| 3 | POST | /api/\ |
インデックスを新規作成する |
| 4 | PUT | /api/\ |
指定したインデックスを更新する |
| 5 | DELETE | /api/\ |
指定したインデックスを削除する |
Scope
インデックス情報を取得するためには、アクセストークンに以下のスコープを要求する。
- index:read
インデックスを新規作成するためには、アクセストークンに以下のスコープを要求する。
- index:create
インデックスを更新するためには、アクセストークンに以下のスコープを要求する。
- index:update
インデックスを削除するためには、アクセストークンに以下のスコープを要求する。
- index:delete
利用可能なロール
| ロール | システム管理者 | リポジトリ管理者 | コミュニティ管理者 | 登録ユーザー | 一般ユーザー | ゲスト(未ログイン) |
|---|---|---|---|---|---|---|
| 利用可否 | 〇 | 〇 | 〇 | △ | △ | × |
※ 〇:利用可能、△:一部機能のみ利用可能、×:利用不可
- インデックスを操作可能なAPIは、システム管理者、リポジトリ管理者、コミュニティ管理者のロールを持つユーザーのみが利用可能である。
- コミュニティ管理者は、所属するコミュニティのインデックスのみを操作可能である。
CURLでのリクエスト実行例
GET /api/v1/tree/
リクエスト
$ curl -k "https://192.168.56.200/api/v1/tree/1623632832836" -H "Authorization:Bearer MjiT81jdxgVdLRi9ENJgAkCM2AuFuDe9Ekh4ZqZuTDtCm4Mu0B7L4AYozTgY" | jq .
-H オプション
- リクエストにカスタムヘッダーを追加する
- Authorization は "Bearer" + " (半角スペース)" + "アクセストークン"の形式で指定する
レスポンス
{
"index": {
"pid": 0,
"cid": 1623632832836,
"position": 0,
"name": "サンプルインデックス",
"link_name": "New Index",
"index_link_enabled": false,
"public_state": true,
"public_date": null,
"browsing_role": "3,-99,-98",
"contribute_role": "4,3,-98",
"browsing_group": "",
"contribute_group": "",
"more_check": false,
"display_no": 5,
"coverpage_state": false,
"recursive_coverpage_check": false,
"is_deleted": false,
"id": "1623632832836",
"value": "サンプルインデックス",
"emitLoadNextLevel": false,
"settings": {
"isCollapsedOnInit": true,
"checked": false
},
"children": [],
"index_name": "サンプルインデックス",
"index_name_english": "Sample Index",
"index_link_name_english": "",
"value_english": "Sample Index"
}
}
API仕様
インデックスツリー取得機能
全インデックスあるいは指定したインデックスの情報を取得する。
エンドポイント
GET /api/
GET /api/
リクエストヘッダー
| ヘッダー | 必須 | 説明 | 例 |
|---|---|---|---|
| Authorization | ○ | 操作するWEKOユーザーのOAuth認証情報。アクセストークンを用いる。 "Bearer" + " (半角スペース)" + "トークン"の形式。 |
"Bearer fVzaeTNY5PCHsNS3rZOARrYR7kPBl4" |
パスパラメータ
| キー | 必須 | 説明 | 例 |
|---|---|---|---|
| version | APIのバージョン | v1 | |
| index_id | インデックスID | 1623632832836 |
レスポンスコード
| コード | 説明 |
|---|---|
| 200 | 正常終了 |
| 400 | リクエストに不備がある |
| 401 | OAuth2認証失敗 |
| 403 | ユーザーのロールあるいはトークンのスコープで指定されたインデックスへのアクセスが許可されていない |
| 404 | 指定されたインデックスが存在しない |
| 500 | サーバ内部のエラー |
レスポンスボディ
正常終了
| 項目名 | 型 | 説明 |
|---|---|---|
| index | dict | インデックスの情報を含む辞書 |
| .pid | integer | 親インデックスのID |
| .cid | integer | インデックスID |
| .position | integer | 親インデックスに紐づく子インデックスにつく連番 |
| .name | string | インデックス名 |
| .link_name | string | インデックスリンク名 |
| .index_link_enabled | boolean | インデックスリンクに表示するかどうか |
| .public_state | boolean | 公開設定 |
| .public_date | string | 公開日 |
| .browsing_role | string | 閲覧権限のあるロール |
| .browsing_group | string | 閲覧権限のあるグループ |
| .contribute_role | string | 投稿権限のあるロール |
| .contribute_group | string | 投稿権限のあるグループ |
| .more_check | boolean | 子インデックスの初回表示個数を変更するかどうか |
| .display_no | integer | 子インデックスの初回表示個数 |
| .coverpage_state | boolean | PDF Cover Page (JA) |
| .recursive_coverpage_check | boolean | 子インデックスにPDFカバーページの設定を再帰的に設定するフラグ |
| .is_deleted | boolean | 削除フラグ |
| .id | string | インデックスID |
| .value | string | 日本語のインデックス名 |
| .emitLoadNextLevel | boolean | |
| .settings | dict | |
| .setting.checked | boolean | |
| .setting.isCollapsedOnInt | boolean | |
| .children | list | 子のインデックスオブジェクト |
| .index_name | string | 日本語のインデックス名 |
| .index_name_english | string | 英語のインデックス名 |
| .index_link_name_english | string | 英語のインデックスリンク表示名 |
| .value_english | string | 英語のインデックス名 |
異常終了
| 項目名 | 説明 |
|---|---|
| code | HTTPステータスコード |
| description | エラーメッセージ |
インデックス作成機能
インデックスを新規作成する。
エンドポイント
POST /api/
リクエストヘッダー
| ヘッダー | 必須 | 説明 | 例 |
|---|---|---|---|
| Authorization | ○ | 操作するWEKOユーザーのOAuth認証情報。アクセストークンを用いる。 "Bearer" + " (半角スペース)" + "トークン"の形式。 |
"Bearer fVzaeTNY5PCHsNS3rZOARrYR7kPBl4" |
パスパラメータ
| キー | 必須 | 説明 | 例 |
|---|---|---|---|
| version | 〇 | APIのバージョン | v1 |
リクエストボディ
| キー | 必須 | 型 | 説明 |
|---|---|---|---|
| index | 〇 | object | インデックスの情報を含むオブジェクト。以下の項目を含む。 |
| .parent | 〇 | integer | 親インデックスのID。0の場合はルートインデックス直下に作成される。例: 0, 1623632832836 |
| .index_name | string | 日本語のインデックス名。例: "APIテスト"。デフォルトは "New Index" | |
| .index_name_english | string | 英語のインデックス名。例: "API test"。デフォルトは "New Index" | |
| .index_link_name | string | インデックスリンク名。デフォルトは"" | |
| .index_link_name_english | string | 英語のインデックスリンク名。デフォルトは "New Index" | |
| .index_link_enabled | boolean | インデックスリンクを有効にするかどうか。デフォルトは false | |
| .comment | string | インデックスのコメント。デフォルトは "" | |
| .more_check | boolean | 子インデックスの初回表示個数を制限し、more表示するか。デフォルトは false | |
| .display_no | integer | more表示時の子インデックスの初回表示個数。デフォルトは 5 | |
| .harvest_public_state | boolean | ハーベスト公開状態。デフォルトは tru | |
| .display_format | string | インデックスの表示形式。一覧表示:"1", 目次表示:"2"。 デフォルトは "1" | |
| .public_state | boolean | インデックスの公開状態。デフォルトは false | |
| .public_date | string | 公開日。YYYYMMDD形式で指定。デフォルトは null | |
| .rss_status | boolean | RSSアイコンを表示するかどうか。デフォルトはfalse | |
| .coverpage_state | boolean | PDFカバーページを有効にするかどうか。デフォルトは false | |
| .browsing_role | string | 閲覧権限のあるロール。複数指定する場合はカンマ区切り。例: "3,-99,-98" | |
| .contribute_role | string | 投稿権限のあるロール。複数指定する場合はカンマ区切り。例: "4,3,-98" | |
| .browsing_group | string | 閲覧権限のあるグループ。複数指定する場合はカンマ区切り。例: "" | |
| .contribute_group | string | 投稿権限のあるグループ。複数指定する場合はカンマ区切り。例: "" | |
| .online_issn | string | オンラインISSN。例: "1234-5678" |
レスポンスコード
| コード | 説明 |
|---|---|
| 201 | 正常終了。新規インデックスが作成された |
| 400 | リクエストに不備がある |
| 401 | OAuth2認証失敗 |
| 403 | ユーザーのロールあるいはトークンのスコープで指定されたインデックスへのアクセスが許可されていない |
| 404 | 指定された親インデックスが存在しない |
| 500 | サーバ内部のエラー |
レスポンスボディ
正常終了
リクエストボディのindexオブジェクトと同様の形式で、作成されたインデックスの情報を含む。
異常終了
| 項目名 | 説明 |
|---|---|
| code | HTTPステータスコード |
| description | エラーメッセージ |
インデックス更新機能
指定したインデックスの情報を更新する。
エンドポイント
PUT /api/
リクエストヘッダー
| ヘッダー | 必須 | 説明 | 例 |
|---|---|---|---|
| Authorization | ○ | 操作するWEKOユーザーのOAuth認証情報。アクセストークンを用いる。 "Bearer" + " (半角スペース)" + "トークン"の形式。 |
"Bearer fVzaeTNY5PCHsNS3rZOARrYR7kPBl4" |
パスパラメータ
| キー | 必須 | 説明 | 例 |
|---|---|---|---|
| version | 〇 | APIのバージョン | v1 |
| index_id | 〇 | 更新するインデックスID | 1623632832836 |
リクエストボディ
| キー | 必須 | 型 | 説明 |
|---|---|---|---|
| index | 〇 | object | 更新するインデックスの情報を含むオブジェクト。新規作成時に加え、以下の項目を含む。 |
| .position | integer | 親インデックス下の表示順。指定しない場合は変更されない。 |
レスポンスコード
| コード | 説明 |
|---|---|
| 200 | 正常終了。インデックスが更新された |
| 400 | リクエストに不備がある |
| 401 | OAuth2認証失敗 |
| 403 | ユーザーのロールあるいはトークンのスコープで指定されたインデックスへのアクセスが許可されていない |
| 404 | 指定されたインデックスが存在しない |
| 500 | サーバ内部のエラー |
レスポンスボディ
正常終了 リクエストボディのindexオブジェクトと同様の形式で、更新されたインデックスの情報を含む。
異常終了 | 項目名 | 説明 | | ----------- | ------------------------ | | code | HTTPステータスコード | | description | エラーメッセージ |
インデックス削除機能
指定したインデックスを削除する。
エンドポイント
DELETE /api/
リクエストヘッダー
| ヘッダー | 必須 | 説明 | 例 |
|---|---|---|---|
| Authorization | ○ | 操作するWEKOユーザーのOAuth認証情報。アクセストークンを用いる。 "Bearer" + " (半角スペース)" + "トークン"の形式。 |
"Bearer fVzaeTNY5PCHsNS3rZOARrYR7kPBl4" |
パスパラメータ
| キー | 必須 | 説明 | 例 |
|---|---|---|---|
| version | 〇 | APIのバージョン | v1 |
| index_id | 〇 | 削除するインデックスID | 1623632832836 |
レスポンスコード
| コード | 説明 |
|---|---|
| 204 | 正常終了。インデックスが削除された |
| 400 | リクエストに不備がある |
| 401 | OAuth2認証失敗 |
| 403 | ユーザーのロールあるいはトークンのスコープで指定されたインデックスへのアクセスが許可されていない |
| 404 | 指定されたインデックスが存在しない |
| 500 | サーバ内部のエラー |
レスポンスボディ
正常終了 レスポンスボディは空。
異常終了 | 項目名 | 説明 | | ----------- | ------------------------ | | code | HTTPステータスコード | | description | エラーメッセージ |
更新履歴
| 日付 | GitHubコミットID | 更新内容 |
|---|---|---|
| 2023/08/31 | 353ba1deb094af5056a58bb40f07596b8e95a562 | 初版作成 |
| 2025/06/06 | 34a972ec2f7a26b92cb55cb4524b20bdde180f39 | インデックス管理APIについて追記 |