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/\/tree 全インデックスの情報を取得する
2 GET /api/\/tree/\ 指定したインデックスの情報を取得する
3 POST /api/\/tree/index インデックスを新規作成する
4 PUT /api/\/tree/index/\ 指定したインデックスを更新する
5 DELETE /api/\/tree/index/\ 指定したインデックスを削除する

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//tree:全インデックス

GET /api//tree/:指定したインデックス

リクエストヘッダー

ヘッダー 必須 説明 例
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//tree/index

リクエストヘッダー

ヘッダー 必須 説明 例
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//tree/index/

リクエストヘッダー

ヘッダー 必須 説明 例
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//tree/index/

リクエストヘッダー

ヘッダー 必須 説明 例
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について追記

results matching ""

    No results matching ""