11
code 302 unsupported_response_type 要求されたレスポンスタイプをrmap.v2 がサポートして いません。 400 unauthorized_client クライアントアプリケーションは現在の方法で認可コー ドを取得することを認可されていません。
[対処方法] 利用申請時に許可していない認可プロセスを使用してい ないか、クライアントID が正しいかどうか、JWT によ る署名情報が正しいかどうか確認してください。 400 access_denied rmap.v2 がリクエストを拒否しました。 400 invalid_scope リクエストスコープが不正、あるいは形式に問題があり ます。 400 invalid_grant 提供された認可タイプが不正、有効期限切れ、失効して います。 JWT Bearer Flow のiss、または、sub、alg が不正な場 合でも、本エラーとなります。 400 unsupported_grant_type 要求されたグラントタイプをrmap.v2 がサポートしてい ません。 400 invalid_version バージョンが不正です。 400 parse_error JSON 等のパースに失敗しました。 400 Or 405 invalid_request 認可関連の必須パラメーターが指定されていません。 400 invalid_client 指定されたクライアントID が不正、または有効ではあ りません(秘密鍵を指定していないなど)。 401 invalid_token 使用しているアクセストークンの有効期限が切れている か無効です。または、アクセストークンが指定されてい ません。 401 malformed_token 使用しているアクセストークンが、期限が設定されてい ない不正なトークンです。 401 insufficient_scope 指定されたリソースへの権限が不正です。
以下のような場合、このエラーとなります。 ・更新できる権限が無いにもかかわらず、更新を実行し ようとした。
[対処方法]
12
更新しようとしているリソースに対して更新権限がある かご確認ください。詳しくは「認可方法」の項目を参照 してください。 401 invalid_ip 設定されたIP アドレス外からアクセスしようとしていま す。
[対処方法] ご使用のサーバーのIP アドレスを確認し、必要に応じて IP アドレスの設定変更の申請をしてください。 403 forbidden 研究者が追加・更新・削除を許可していません(注ii)。 アカウント情報までの編集許可がない場合にアカウント 情報を更新しようとした場合も含まれます。 404 not_found 指定されたリソースが見つかりません。
以下のような場合、このエラーとなります。 ・ リクエストされたリソースが存在しない。 ・ アクセスが許可されていないリソースへアクセスし ようとした。 405 method_not_allowed 許可されていないメソッドを使用しようとしています。
以下のような場合、このエラーとなります。 ・POST メソッドの使用が許されていないエンドポイン トへ、POST メソッドでリクエストした。 416 max_search_result データ取得時に検索結果が多すぎる場合に発生します。 start+limit は10000 以下にしなければなりません。 500 database_error データベースでの処理中にエラーが発生しました。 500 server_error 要求の処理中に予期しないエラーが発生しました。
2.3.4 共通バリデーションエラー レスポンス表
rmap.v2 API の更新系API を実行した際の共通バリデーションのエラー理由とチェック内容につい て説明します。 code Reason フィールド名 チェック内容 400 required_value (フィールド共 通) 必須項目チェック
必須項目を記入しないで更新しようとした 場合、本エラーとなります。
13
「※ja(en)の項目に入力があれば必須」と 記入してある日本語と英語を持つ必須項目 は、以下のように必須項目チェックを行い ます。 ・ 日本語項目のいずれかが入力されてい る場合、必須項目(日本語)は必須と なる。 ・ 英語項目のいずれかが入力されている 場合、必須項目(英語)は必須となる。 400 invalid_request (フィールド共 通) リクエストにサポート外のパラメーターが 付与されている、その他不正な形式であっ た場合、このエラーメッセージが表示され ます。 ただし、インポートにて未定義の項目名を 指定した場合は無視されます。 400 disallow_update (フィールド共 通) 更新許可チェック 更新を許可していないカラムを更新しよう とした場合、本エラーとなります。 400 unique_value (フィールド共 通) 重複チェック 400 invalid_string_length (Text フィール ド共通) 文字数チェック テキスト:500 テキストエリア:15000 文字 プロフィール:32000 文字 ※ その他文字長制限がある項目は、個別 に記載されています。 400 invalid_format (Text フィール ド共通) 書式が不正かどうかのチェック 400 invalid_url (Text フィール ド共通) URL チェック 400 invalid_email (Text フィール ド共通) Email チェック 400 invalid_date (Date/DateTime フィールド共通) 日付の型チェック 400 invalid_date_range (Date/DateTime フィールド共通) 日付の期間チェック 400 invalid_numeric (数値フィールド 共通) 数値チェック 400 invalid_numeric_range (数値フィールド 数値範囲チェック
14
共通) 400 invalid_boolean (ブールフィール ド共通) ブール値チェック ※ 一括更新で返却するレスポンスコードはバリデーションエラーの場合、200 を返します(各行の エラーが全体のレスポンスコードに影響を及ぼさない)。
15
2.4 制限事項 rmap.v2 API では、アクセスに関して以下の制限があります。 ・ JST が発行した API キーを使って OAuth2 JWT Bearer Flow の認可プロセスでアクセストー クンを取得して、そのアクセストークンを利用して、情報取得・更新・検索 API を利用する場 合、公開情報の取得、一括取得、更新、 検索が可能な範囲は、API キーに紐づいた機関に所属す る一般会員となります。 ・ 各 API は、各研究者の権限設定、機関の権限設定によって利用可否が決定されます。詳しくは 「研究者情報、代理人情報における取得・更新範囲」をご覧ください。 ・ システムが識別できないリクエストパラメーターは無視されます。 ・ レスポンスは JSON 形式であるため、実際のレスポンスでは各項目が本設計書に書かれた順番 で出力されるとは限りません。
2.5 リクエスト、正常時レスポンス rmap.v2 API の「API リファレンス」にある API のエンドポイント、共通ヘッダの仕様を以下に示 します。
2.5.1 エンドポイント(ベース URL)
https://api.researchmap.jp ※ 直下の URL でアクセスした場合、 「404 Not Found」となる JSON 形式のエラーとなります。
2.5.2 リクエストヘッダ Host: xxxxxx.example.com Authorization: Bearer [ACCESS TOKEN] Accept: application/ld+json,application/json,/;q=0.1 Accept-Encoding: gzip
(Content-Type: application/x-www-form-urlencoded) or (Content-Type: application/json)
リクエストヘッダ説明(いずれも任意) パラメーター名 項目名 説明 Authorization
アクセストークン指 定 [ACCESS TOKEN]の箇所にアクセストークンを指定し ます。
※ OAuth 2.0 mac トークンタイプには未対応。 Accept 利用可能なアプリケ JSON-LD、JSON を第一優先にし、それ以外を第二優
16
ーション・メディア タイプ 先として指定しています。
※ 詳しくは「研究者情報取得」の format パラメータ ーを参照してください。 Accept- Encoding 受け入れ可能な圧縮 方式 「gzip」のみ利用可能。 Content-Type 送信するデータの種 類(POST 時のみ) POST の内容が JSON(一括更新)ならば 「application/json」 、それ以外の POST ならば 「application/x-www-form-urlencoded」を指定しま す。 ※ GET パラメーターとリクエストヘッダで異なる内容を設定した場合、GET パラメーターが優先 されます。
2.5.3 レスポンスヘッダ ここでは主要なレスポンスヘッダのみ説明します。 HTTP/1.1 200 OK Content-Type: application/ld+json ; charset=UTF-8 (エラー時:Content-Type: application/json; charset=UTF-8) Content-Encoding: gzip Link: https://api.researchmap.jp/researcher.jsonld; rel="http://www.w3.org/ns/json- ld#context"; type="application/ld+json" Link: https://api.researchmap.jp/researcher.jsonld; rel="http://www.w3.org/ns/json- ld#context"; type="application/ld+json",https://api.researchmap.jp/?start=100&limit=20; rel="previous"; type="application/ld+json",https://api.researchmap.jp/?start=121&limit=20; rel="next"; type="application/ld+json"
レスポンスヘッダ説明 パラメーター名 項目名 説明 Content-Type コンテンツタイプ 正常時:application/ld+json エラー時:application/json Content- Encoding コンテンツのエンコ ード方式 Accept-Encoding が指定してあった場合に出力。 Accept-Encoding での圧縮方式に従ってレスポンスを圧 縮します。 Link JSON-LD コンテキ スト JSON-LD で出力する場合のみ出力。 「フィールド名の IRI 先定義ファイルパス」と同様です。詳しくは、 @context の項目を参照してください。 Link ページング用リンク (previous,next) previous は前ページがある場合のみ出力。 next は最終行の会員 ID、もしくは業績 ID を出力。
17
※ next の会員ID、もしくは業績ID 以降のデータが無 ければ、次ページのURL にアクセスしてもデータは 出力されません。 ※ URL の中身の詳細は、各API レスポンスの next,previous の項目を参照してください。 ※ レスポンス中にも同様の情報は出力されるものもあ ります。 ※ その他、キャッシュ情報(ETag、Last-Modified 等)を付加する可能性あり。
2.5.4 ステータスコード 正常時のステータスコードを以下に示します。エラーの場合は、「エラー処理」をご覧ください。 code タイトル 説明 200 OK GET, PUT, PATCH, DELETE リクエストが成功、あるいは、POST リクエストが結果的に何もリソースを作らなかった場合。 201 Created リクエストがリソース作成に成功した場合。なお、そのリソースへの リンクを Location ヘッダに含める必要があります。 204 No Content DELETE リクエストで成功し、返すべきレスポンスがない場合。 ※ 削除するドキュメントがない場合、404 のエラー。 304 Not Modified キャッシュが有効な場合。
18
2.6 2 の注
i scope で指定できる値。 項目名 説明 write (write or read or public_only いずれかは必 須) 機関、研究者の権限設定に基づき、取得、更新できます。 利用申請で権限範囲について「取得(非公開情報を含む)・書 き込み」とした場合のデフォルト値です。 ※ 例えば「write profile awards」と指定すれば、プロフ ィール情報、受賞のみ権限設定に基づき、取得、更新で きるようになります。 ※ public_only, read と併用した場合の優先順位: public_only>read>write。 read (write or read or public_only いずれかは必 須) 機関、研究者の権限設定に基づき、取得できます。 利用申請で権限範囲について「取得(非公開情報を含む)」と した場合のデフォルト値です。 ※ public_only, write と併用した場合の優先順位: public_only>read>write。 public_only(write or read or public_only いずれかは必 須) 公開情報に限り閲覧可。 利用申請で権限範囲について「取得(公開情報に限り)」とし た場合のデフォルト値です。 ※ read, write と併用した場合の優先順位: public_only>read>write。 researchers 研究者情報すべてが対象(プロフィール情報+業績情報す べて) 利用申請で取得範囲について「研究者情報すべて」とした 場合のデフォルト値です。 profile プロフィール情報(アカウント情報+基本情報) 利用申請で取得範囲について「プロフィール情報のみ」と した場合のデフォルト値です。 basic 基本情報 achievements 業績情報すべて 利用申請で取得範囲について「業績情報のみ」とした場合 のデフォルト値です。 research_interests 研究キーワード research_areas 研究分野 research_experience 経歴
19
education 学歴 committee_memberships 委員歴 awards 受賞 published_papers 論文 misc MISC books_etc 書籍等出版物 presentations 講演・口頭発表等 teaching_experience 担当経験のある科目(授業) association_memberships 所属学協会 works Works(作品等) research_projects 共同研究・競争的資金等の研究課題 industrial_property_rights 産業財産権 social_contribution 社会貢献活動 media_coverage メディア報道 academic_contribution 学術貢献活動 others その他 research_data 研究データ ※assistants のscope はありません。researchers、あるいはprofile を選択した上で、write の 範囲までの権限を有している場合に代理人情報が扱えます。
ii 機関に結びついているクライアントID での操作の場合、その機関外(institution_code で判断) の所属へ更新しようするとエラーとなります。機関も部署までの機関(第二階層までの機関)に結 びついているならば、部署も変更できません。
20
- API リファレンス
3.1 研究者情報
3.1.1 研究者情報取得
研究者のマイポータルの研究者情報を一度に取得できる API です。 アプリケーションがrmap.v2 の マイポータルのような CV を表示する際は有用です。 各プロフィール情報、 業績情報を取得する際は、プロフィール情報取得、業績情報取得をご使用くだ さい。
リクエスト GET https://api.researchmap.jp/{permalink}(注iii)
パラメーター パラメーター名 項目名 説明 format 出力フォーマット レスポンスの形式を指定します。 デフォルト: json json: JSON 形式
※ HTML リクエストヘッダの Accept ヘッダで以下の 記載でも動作します。 "application/ld+json":json (application/json) start 取得する業績リスト の開始番号。 デフォルト: 1 limit ページあたりの業績 件数。 デフォルト: 20 件。最大:1000 件。 ※ 最大値をこえた指定をした場合、1000 として出力さ れます。
① json 形式で permalink「sample」の研究者情報を取得するサンプル GET https://api.researchmap.jp/sample?format=json
3.1.1.1 研究者情報レスポンス
詳細は、各レスポンスを参照してください。 {
21
{プロフィール情報レスポンス} "@graph": [ {研究キーワードリストレスポンス(注iv) }, {研究分野リストレスポンス(注 iv)}, {経歴リストレスポンス(注 iv)}, {学歴リストレスポンス(注 iv)}, {委員歴リストレスポンス(注 iv)}, {受賞リストレスポンス(注 iv)}, {論文リストレスポンス(注 iv)}, {MISC リストレスポンス(注 iv)}, {書籍等出版物リストレスポンス(注 iv)}, {講演・口頭発表等リストレスポンス(注 iv)}, {担当経験のある科目(授業)リストレスポンス(注 iv)}, {所属学協会リストレスポンス(注 iv)}, {Works(作品等)リストレスポンス(注 iv)}, {共同研究・競争的資金等の研究課題リストレスポンス(注 iv)}, {産業財産権リストレスポンス(注 iv)}, {学術貢献活動リストレスポンス(注 iv)}, {社会貢献活動リストレスポンス(注 iv)}, {メディア報道リストレスポンス(注 iv)}, {その他リストレスポンス(注 iv)}, {研究データリストレスポンス(注 iv)} ] } ※ 業績種別の並び順は、各研究者の設定によって決定されます。 「3.4.1.業績リスト取得」API の並 び順とも異なりますので、_link タグ(next, previous)は表示しません。また、出力するデータ がない業績種別は表示されません。 ※ 全ての業績に主要な成果(major_achievement)を設定できます。各業績種別の登録業績に主要 な成果があればそのリストのみ出力し、 主要な成果がなければ研究キーワード、 研究分野は全件 を、それ以外の業績種別は登録業績の先頭 20 件を出力します。
22
3.1.2 研究者情報、代理人情報一括取得 一括取得API を使用すると、一括更新用の研究者情報、代理人情報のデータが取得できます。取得 できる範囲については「取得範囲における制限」をご覧ください。 リクエスト GET https://api.researchmap.jp/_bulk
パラメーター(GET) パラメーター名 項目名 説明 format 出力フォーマッ ト レスポンスの形式を指定します。 以下のいずれかを選択できます。 デフォルト: json json: 一括更新用JSON 形式 csv: CSV 形式
※ HTML リクエストヘッダのAccept ヘッダで 以下の記載でも動作します。 "application/ld+json":json (application/json) "application/csv":csv (text/csv) target 出力対象 出力する対象を指定します。 以下のいずれかを選択できます。 デフォルト: researchers researchers: プロフィール情報の出力 assistants: 代理人情報の出力 業績種別: published_papers など指定された業績 種別の出力(注v) modified 最終更新日時 指定された更新日時以降のデータを出力します。
2016 or 2016-08 or 2016-08-18 or 2016-08-18- 090000 等で指定できます。 また、以下のように指定することもできます。 (注xiii) "-1 week":1 週間以内 "-2 week":2 週間以内 "-1 month":1 ヶ月以内 "-2 month":2 ヶ月以内 "-3 month":3 ヶ月以内 achievements_from_date 出力期間 出力期間(From)-(To)を指定できます(2016
23
(From) or 2016-08-18 等で指定)。各業績種別について、 以下の項目で絞り込みを行います。出力期間を指 定した場合、以下に記述のない業績種別は出力さ れません。 ・論文、MISC、書籍等出版物:出版年月(日) ・講演・口頭発表等:発表年月日、または、開催 年月日(From)、開催年月日(To) ・受賞歴:受賞年月 ・経歴、学歴、委員歴、所属学協会、担当経験の ある科目(授業)、共同研究・競争的資金等の研 究課題、Works(作品等)、その他:年月 (From)、年月(To) ・社会貢献活動:年月日(From)、年月日(To) ・メディア報道:報道年月(日) ・学術貢献活動:実施年月日(From)、実施年月 日(To) ・産業財産権:出願日、または、公開日、また は、公表日、または、登録日、または、発行日 ・研究データ:掲載日 achievements_to_date 出力期間(To) institution_code 機関コード 先頭 4 桁で機関名の絞り込み、先頭 7 桁で部署の 絞り込みとして利用できます。 4 桁、7 桁で検索を行う場合、最後に「」 (アス タリスク)を付けて「R123」としてください。 ※ 所属機関事務担当者の場合、自動的に自身の 機関コードで絞られます(R123123000 の場 合、 「R123123」の機関で絞られます)。 rm_user_id 会員 ID 例:R000000003 output_full_schema フルスキーマで 表示するかどう か デフォルト: true true の場合、 「rm:」のデータを含め出力されま す。 ※ 「rm:」の項目はインポートでは利用されない 項目です。 next 次ページを表示 するかどうか 以下のいずれかを指定することで、続きのデータ を取得できます。 それ以外が指定された場合、エラーになります。 会員 ID: プロフィール情報取得時 業績 ID: 業績情報取得時 "true": 前回取得した続きからデータを取得 "":next パ ラメ ー ターに 値 を指 定 しな い場 合
24
は、”true”指定時と同様の挙動
※ 会員 ID、業績 ID は、指定した ID の続きか らデータを取得します。 ※ 前のページを取得したい場合は、再度、next を指定せずに 1 ページ目から再取得する必要 があります。 ※ next パラメーターを利用せずに、ある一定期 間過ぎますと、有効期限切れとなりエラーと なります。 limit ページあたりの 業績件数。 デフォルト: 1000 件。最大:3000 件。 ※ 最大値をこえた指定をした場合、3000 とし て出力されます。
※ 出力順は、①業績種別、②会員 ID、③各業績リスト (研究分野と研究キーワードは研究者が設定 した表示順、それ以外の業績はマイポータルの各業績リストの新しい順)で出力されます。
① 代理人情報を csv 形式で最大 50 件取得するサンプル GET https://api.researchmap.jp/_bulk?format=csv&target=assistants&limit=50
② 上記の 51 件目~最大 100 件目までを取得するサンプル ※上記 API 実行の直後に実行 GET https://api.researchmap.jp/_bulk?format=csv&target=assistants&limit=50&next
③ 2021 年 12 月 1 日以降に更新された研究者のプロフィール情報を csv 形式で取得するサンプル GET https://api.researchmap.jp/_bulk?target=researchers&format=csv&modified=2021-12-01
④ 論文情報を「rm:」項目を含めずに JSON 形式で取得するサンプル GET https://api.researchmap.jp/_bulk?target=published_papers&output_full_schema=false
⑤ R000000003 の論文情報を csv 形式で取得するサンプル GET https://api.researchmap.jp/_bulk?target=published_papers&format=csv&rm_user_id=R00000 0003
⑥ 機関コード「R123000000」に所属する研究者のプロフィール情報を JSON 形式で取得するサ ンプル
25
GET https://api.researchmap.jp/_bulk?target=researchers&institution_code=R123*
3.1.2.1 研究者情報、代理人情報一括取得レスポンス
[JSON 形式](format=json) レスポンスは、 「研究者情報、代理人情報一括更新」のパラメーター(POST BODY(JSON))と同 様なのでそちらをご覧ください。取得データはすべて action=insert、action_type=merge のデータ となります。
[CSV 形式] (format=csv) CSV 形式の構造や注意点については、以下の CSV ファイル項目定義書をご覧ください。 https://researchmap.jp/outline/v2api/v2CSV.pdf
3.1.3 研究者情報、代理人情報一括更新 一括更新の API を使用すると、一度の API 呼び出しで多くの追加/更新/削除操作を実行できます。 しかし、 即時更新されるものではなくリクエスト後、 その他の一括更新状況を確認し、 順次、 実行さ れていきます。実行結果の確認方法は、 「一括更新結果確認」の API より行います。更新できる範囲 については「更新範囲における制限」をご覧ください。
リクエスト POST or PUT https://api.researchmap.jp/_bulk
パラメーター(GET) パラメーター名 項目名 説明 check 整合性チェックのみ 行うかどうか パラメーター(GET)に「check」(または、check=1) を記載すると、入力チェックのみ実行され、その結果を 確認できます。その場合、「一括更新結果確認」の API より確認します。check を指定しなくても入力チェック を行い、1 件でもエラーがあった場合、更新処理は行い ません。 id 一括更新 ID 「check」パラメーターをつけ、入力チェックのみ行っ たデータは、本 API のレスポンスより取得される bulk_url を用いてインポートを実行できます。対象は、 check の API を実行し、その結果が確認できる状態であ れば、実行できます。
Body 部に JSON 形式で追加 ・ 更新 ・ 削除するデータを送信します。 シーケンスの例を次に示します。 API では、JSON 形式しか許可されませんが、rmap.v2 へログインしインポートする場合、CSV 形
26
式、Zip 形式(Zip 中に JSON or CSV ファイルを複数含む)が許可されます。
パラメーター(POST BODY(JSON)) 1
2
3
4
5
6
7
8 9
10
11
研究者 新規登録
業績 新規登録
業績情報更新
代理人 情報登録 類似データマ ージ(類似デ ータ優先)
入力データ強 制追加
研究者情報更
新
研究者削除
代理人情報登
録
代理人情報削
除
業績削除(削
除理由あり)
{"insert": {"type": "researchers"}, "merge":
{"email":"[email protected]",
"permalink":"tsuzuki","role":"researcher", "gender":"male",
"birth_date":"1980-01-01", "family_name": {"ja": "鈴木", "ja-Kana": "ス
ズキ", "en": "Suzuki"}, "given_name": {"ja": "太郎", "ja-Kana": "タロウ",
"en": "Taro"}, "affiliations": [{"affiliation": {"ja": "XXX大学", "en": "XXX
University"}, "section": {"ja": "大学院 XXX 研究科", "en": "XXX
School"}, "job": {"ja": "教授"}}]}}
{"insert": {"type": "published_papers", "user_id": "xx"}, "merge":
{"paper_title":{"ja": "XXXXX", "en": "XXXXX"},"publication_date":"2011-
10-10","publication_name":{"ja": "XXXXX", "en": "XXXXX"}}}
{"insert": {"type": "published_papers", "id": "10002"}, "merge":
{"paper_title": {"ja": "XXXXX", "en":
"XXXXX"},"publication_date":"2010-10-10","publication_name": {"ja":
"XXXXX", "en": "XXXXX"}}}
{"insert": {"type": "assistants", "permalink": "tsuzuki"},"merge":
{"assistant_id": " R000000003"}}
{"insert": {"type": "published_papers", "user_id": "R000000001"},
"similar_merge": {"paper_title":{"ja": "XXXXX", "en":
"XXXXX"},"publication_name": {"ja": "XXXXX", "en": "XXXXX"}},
"priority": "similar_data"}
{"insert": {"type": "published_papers", "user_id": "R000000001"},
"force":{"paper_title":{"ja": "XXXXX", "en": "XXXXX"}, "authors": {"ja":
[{"name": "xxxx"}, {"name": "xxxx2"}], "en": [{"name": "xxxx"}, {"name":
"xxxx2"}]}, "publication_name":{"ja": "XXXXX", "en": "XXXXX"},
"invited": false, "published_paper_type": "research_institution",
"publication_date": "2013-03"}}
{"update": {"type": "researchers", "id": "R000000001"}, "doc":
{"display_url": "disclosed"}}
{"delete": {"type": "researchers", "id": "R000000003"}}
{"insert": {"type": "assistants", "id": "R000000002"},"merge":
{"assistant_id": " R000000001"}}
{"delete": {"type": "assistants", "id": "R000000002", "assistant_id": "
R000000001"}}
{"delete": {"type": "published_papers", "id": "10002"}, "delete_reason":
"not_mine"}
27
12 業績情報更新 {"update": {"type": "published_papers", "id": "10002"}, "doc": {"publication_name": {"ja": "XXXXX", "en": "XXXXX"}}} ※ 1 リクエストあたりの JSON の最大サイズは、10MB です。 画面のインポートでは 1 回のファ イルサイズの上限が 10MB です。圧縮した場合も最大 10MB とします。エクスポートファイ ルをそのままインポートする際は、この制限にかかる可能性があります。 ※ 必ず 1 行に 1 業績、 あるいは1 研究者のデータを記載してください。 不要な改行を含んでいます とエラーとなります。プロフィール等でデータに改行を含む場合、¥n で記載する必要がありま す。 ※ 以下の文字をデータ中に含める場合は、「¥」でエスケープします。「"」であれば「¥"」と記載し ます。 エスケープ表記 説明 ¥" ダブルクォーテーション ¥¥ バックスラッシュ ¥n 改行 ¥uXXXX 4 桁の 16 進数で表記された Unicode 文字 ➢ データ中の改行は¥n と表記しますが、 「プロフィール」に限り html が利用できるため、 「<p></p>」などで囲い改行します。
研究者の追加リクエストとその追加した研究者の業績追加、あるいは代理人設定の追加を行いたい 場合、 まず、 研究者の追加リクエストを実行し、 それに続いて業績追加、 あるいは代理人設定の追加 を行います。 その際、 研究者の追加リクエストで取得した 「id」 を用いなくとも、 「permalink」 を指 定することで同様のことが可能となります(上記例の 3 - 4)。 また、 「代理人設定」 については、 以下のようにシボレスのePPN の設定によっても登録が可能です。 { "insert": { "type": "assistants", "eppn": "zzzz@xxx"}," merge": {"assistant_eppn": "aaa@xxx"}} { "delete": { "type": "assistants", "eppn": "zzzz@xxx", "assistant_eppn": "aaa@xxx"}} ※ 一括取得では、id 及び、assistant_id の取得となります。 ※ 複数の会員 ID に結びつく、あるいは誰にも結びついていなければエラーとなります。
Body 部では、まず、どのようなアクションを行うかを指定し、その内部にそのアクションを何に対 して行うか(type, id)を指定します。可能なアクションは、追加(insert)、削除(delete)、および 更新(update)です。さらに insert は、次の追加・更新データの記載部の key として merge、 similar_merge、force を指定でき、update は、doc を指定します。そして、その key 内部に追加・ 更新するデータを研究者情報・業績情報取得 API の階層・項目名に従って記載します。また、 similar_merge を指定した場合、 さらにpriority を key として、similar_data、 あるいはinput_data (デフォルト: input_data)を指定できます。削除は、delete_reason を key として、mine あるいは not_mine(デフォルト: なし)を指定できます。各アクションの意味は以下のようになります。
アクションの種類
28
項目名 アクション名 説明 insert (merge 指定) マージ (追加・更 新) 指定ドキュメントがない場合、新規登録。あれば入力データ を優先させ指定ドキュメントとマージします。ただし業績情 報については、id 指定がない場合、追加・更新を行おうとし ている会員の業績リスト中に類似ドキュメントがあればエラ ーとなります。 id が指定してあり、それと一致するドキュメントが存在した 場合、その id のドキュメントを指定ドキュメントとしま す。一致する指定ドキュメントが存在しない、または、別種 別へ移動された場合は、エラーとなります。 ※ 類似ドキュメントの確認は、業績情報のみ行われます。 ※ プロフィール情報の追加が許可されていない権限におい ては、 「update(部分)更新」と同様となります。 insert (similar_merge 指定) priority= input_data 類似データマ ージ(入力デ ータ優先) 「マージ」と基本的には同じですが、追加・更新を行おうと している会員の業績リスト中に類似ドキュメントがあった場 合、入力データ(または、入力データを指定ドキュメントと マージしたもの)を優先させ、類似ドキュメントをマージし ます。 ※ 業績情報のみ指定可能。 ※ 入力データの項目に存在しない項目のみ、類似ドキュメ ントの値を補完することになります。 ※ 類似業績とマージした際は、本人による登録であっても 承認状態を「承認済-自動」とします(「却下」可能にす るため)。 ※ 研究者、代理人では similar_merge 指定はできません。 insert (similar_merge 指定) priority= similar_data 類似データマ ージ(類似デ ータ優先) 「マージ」と基本的には同じですが、追加・更新を行おうと している会員の業績リスト中に類似ドキュメントがあった場 合、類似ドキュメントを優先させ、入力データ(または、入 力データを指定ドキュメントとマージしたもの)をマージし ます。 ※ 業績情報のみ指定可能。 ※ 類似ドキュメントの項目に存在しない項目のみ、入力デ ータの値を補完することになります。 ※ 類似業績とマージした際は、本人による登録であっても 承認状態を「承認済-自動」とします(「却下」可能にす るため)。 ※ 研究者、代理人では similar_merge 指定はできません。 insert (force 指定) 入力データ強 制追加 「マージ」と基本的には同じですが、類似ドキュメントがあ った場合でも、別業績として扱い強制的に新規登録を行いま
29
す。ただし、類似ドキュメントが機関以外(本人相当)によ って登録/更新されている場合は、追加することができませ ん。 ※ 業績情報のみ指定可能。 ※ 多用すると、同じ会員リスト中に類似業績が増え続けま す。通常の「merge」指定でエラーになり、類似業績と 分けてどうしても登録したい場合のみご利用ください。 ※ 研究者、代理人、研究キーワード、研究分野では force 指定はできません。 ※ id 指定は不要。id 指定をした場合は、 「merge」指定と 同様の動作をするため、強制追加はされません。 delete delete_reason= mine (not_mine) 削除 (削除理由: 自分のもの or 自分のもので はない) ドキュメントを削除。削除理由(delete_reason)が 「not_mine」の場合、削除した業績が、共著者からの伝搬 や、AI からの名寄せにより追加されたものならば、それ以 降、その業績はその会員リストに追加されなくなります。 ※ id 指定は必須。 ※ 論文、MISC のみ削除理由(delete_reason)を指定でき ます。 update(doc 指 定) (部分)更新 業績 ID(会員 ID)が一致するドキュメントがなければエラ ーとし、あれば更新します。 ※ id 指定は必須。 ※ プロフィール情報、及び、業績情報のみ指定可能。 ※ insert で代替できますが、新規登録を行いたくない場 合、利用します。
ドキュメントを特定する項目について 項目名 タイトル 説明 type タイプ(必須) 追加・更新を行う対象。 指定できるタイプは、 「researchers」(研究者) (代理 人の新規登録もこちら)、「assistants」(代理人)、業績 種別(注v)のいずれかを指定できます。 「assistants」は、研究者毎に代理人にする会員 ID を 指定することで、その会員 ID に指定した研究者の代理 編集権限を付与することができます。 id ID (update,delete 必須) 追加・更新を行う会員 ID、または業績 ID。 研究者、代理人設定であれば会員 ID、業績であれば業 績 ID(rm:id)。 user_id 会員 ID 追加・更新を行う会員 ID ※ 業績情報の場合、指定できます。
30
permalink パーマリンク 研究者の permalink。会員 ID(id)の替わりに設定で きます。id、eppn が指定されている場合、permalink の項目は無視されます。 assistant_id (type:assistants) 代理人 ID 代理人を追加、設定した代理人を削除する場合に指定し ます。 eppn (type:assistants) ePPN 代理で編集される研究者の ePPN。会員 ID(id)の替 わりに設定できます。id が指定されている場合、ePPN の項目は無視されます。 assistant_eppn (type:assistants) 代理人の ePPN 代理人の ePPN。会員 ID(id)の替わりに設定できま す。assistant_id が指定されている場合、代理人の ePPN の項目は無視されます。 ※ 指定ドキュメントは、rmap.V2 の既登録データの id が一致したデータを意味します。入力デー タは、機関から送信されたデータを意味します。 ※ ドキュメントが存在するかどうかは、ID が同一かどうかで判断します。ただし、 業績情報につい ては、それとは別に類似ドキュメントをさがします。類似ドキュメントかどうかの判断は「類似 チェック仕様」を参照してください。 ※ 業績 ID を指定しない更新では、researchmap の類似チェックにより、既登録データから類似し ているデータを探して更新します。しかし、異なるデータを類似と判定する可能性があるため、 業績 ID を指定して更新する方法を推奨しています。 ※ 研究者情報、代理人情報、業績情報のデータが 1 リクエスト中に複数混在しても構いませんが、 研究者情報の新規登録の前にその研究者の業績情報、代理人情報の追加は行えません。 ※ 代 理 人 情報 は 、 「assistants」ア ク ショ ン で更 新し ま す が、 ま ず、 代理人 の 研 究者 情 報を 「researchers」 指定 によ り追 加する 必要 があり ます 。また 、代 理人の 削除 は研究 者情 報 「researchers」の削除指定方法で行ってください。
フィールドと値の説明は、 「プロフィール情報レスポンス」 、 「業績情報取得の各レスポンス」と同様 ですので、 そちらをご覧ください。 チェック内容につきましては、 「共通バリデーションエラー レス ポンス表」「プロフィール情報バリデーションエラー レスポンス表」「業績情報バリデーションエラ ー レスポンス表」をご覧ください。
① id「10001」の受賞の授与機関(日本語)の値を「更新機関」、授与機関(英語)の値を「kosin kikan」に更新するサンプル。ただし、check パラメーターに 1 を設定しているため、実際に更 新は行われず、更新内容のチェックのみが行われる。 POST https://api.researchmap.jp/_bulk?check=1 Host: xxxxxx.example.com Authorization:Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Content-Type: application/x-www-form-urlencoded { "insert": {"type": "awards", "id": "10001"},
31
"merge": {"association":{"ja": "更新機関", "en": "kosin kikan"}} }
② 上記リクエスト内容を実行するサンプル(上記リクエストのレスポンスの bulk_url 内の id パ ラメーターの値が xxxxx の場合) POST https://api.researchmap.jp/_bulk?id=xxxxx Host: xxxxxx.example.com Authorization:Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
レスポンス(パラメーターid 指定がない場合)(①のレスポンス例) { "code": 200, "url": "https://api.researchmap.jp/_bulk_results?id=xxxxx", "bulk_url": "https://api.researchmap.jp/bulk?id=xxxxx" } ・ url の項目の value により、更新結果の確認が可能となります。詳しくは次項をご覧ください。 ・ bulk_url の項目は check パラメーターがついた場合に表示されます。 ・ check パラメーターとid パラメーターが両方指定された場合は、 エラーとなります(400 invalid request)。
レスポンス(パラメーターid 指定がある場合)(②のレスポンス例) { "code": 200, "status": "processing", "total_items": "41" } ・ 「チェック完了」 になっていないデータをインポートしようとした際は、 エラーとなります(400 invalid_status)。
業績 ID を指定しない類似データマージ(insert (similar_merge))による一括更新において、 「公開設定」 、 「主要な業績かどうか」の更新には以下のルールがあります。 ・ 公開フラグ(display) 入力データと、類似チェックで見つかった researchmap 登録データで、 「公開フラグ」の優先 順位を[非公開>研究者のみに公開>公開]とし、より優先順位の高い値で更新します。 ・ 主要な業績かどうか(major_achievement) 入力データと、 類似チェックで見つかった researchmap 登録データで、 「主要な業績かどうか」 の優先順位を[true>false]とし、より優先順位の高い値で更新します。
3.1.3.1 一括更新結果確認
32
リクエスト GET https://api.researchmap.jp/_bulk_results
パラメーター(GET) パラメーター名 項目名 説明 id 一括更新 ID(必 須) 「研究者情報、代理人情報一括更新」のレスポンスに て取得した ID。 display_type 成功 or 失敗のど ちらのリストを表 示するか success: 正常に登録されたリストを表示 (or 正常にチェック終了になったもの) error: エラーリストを表示 デフォルト: error next 次ページを表示す るかどうか 「next=xxx」指定。 <インポート結果> json の最終行の"no", "line"を「_」区切りで指定する と xxx 以降のデータが出力されます。例えば 「next=1_30」であれば、1 ファイル目の 31 行目か らの結果が表示されます。 <API の更新結果> 行数: 指定した行数の続きからデータを取得します。 "true": 前回取得した続きからデータを取得します。 (next パラメーターを指定し、値を指定しない場合 も、前回取得した続きからデータ取得します。 )
前のページを取得したい場合は、再度、next を指定せ ず取得する必要があります(1 ページから再取得) 。 ただし、next パラメーターを利用せずに、ある一定期 間過ぎますと、有効期限切れとなりエラーとなりま す。 limit ページあたりの一 括更新結果件数 デフォルト: 1000 件。最大:3000 件。 ※ 最大値をこえた指定をした場合、3000 として出力 されます。
① 処理結果=正常(success)のリストを最大 5 件取得するサンプル GET https://api.researchmap.jp/_bulk_results?id=xxxx&display_type=success&limit=5
② 上記の 6 件目~最大 10 件目までを取得するサンプル GET https://api.researchmap.jp/_bulk_results?id=xxxx&display_type=success&limit=5&next ※ 上記 API 実行の直後に実行
33
③ 一括更新の POST BODY に設定した 11 件目以降の内容のエラーリストを取得するサンプル GET https://api.researchmap.jp/_bulk_results?id=xxxx&display_type=error&next=10 ※ next パラメーターはレスポンスの line 項目の値(=研究者情報、代理人情報一括更新 API の POST BODY の行番号)に対応しているため、エラーリストの行番号と一致するとは限りませ ん。例えば、一括更新 API の POST BODY に設定した更新内容の 1~9 件目がエラーでない場 合、エラーリストの 1 行目には line=10 のエラー内容が出力されることになります。そのため、 next=10 を指定するとエラーリストの 2 件目以降が返却されます。
レスポンス
以下のような JSON を返します。 (display_type=error)の場合の例:(③のレスポンス例) {"code": 400, "status": "error", "start_datetime": "2017-02-15T10:17:04Z", "end_datetime": "2017-02-15T14:17:04Z", "estimated_end_datetime": "2017-02-15T14:17:04Z", "total_items": "4", "process_items": "4", "error_items": "4", "errors": [{"code": "400", "error": "parse_error", "error_description": "Failed to parse the xxxxxx."}]} (「処理待ち」 、 「チェック中」 、 「処理中」の場合、estimated_time) {"no": 1, "line": 3, "code": "404", "action": "delete", "type": "assistants", "id": "R00000123", "assistant_id": "R00000124"} {"no": 1, "line": 5, "code": "400", "action": "insert", "action_type": "merge", "type": "researchers", "id": "R0000125", "errors": [{"error": "invalid_request", "field_name": ["gender"], "error_description": "Invalid field selection hogehoge"}]} (display_type=success)の場合の例:(①のレスポンス例) {"no": 1, "line": 9,"code": 201, "status": "completion", "start_datetime": "2017-02- 15T10:17:04Z", "end_datetime": "2017-02-15T14:17:04Z", "total_items": "4"} {"no": 1, "line": 10, "code": "201", "action": "insert", "action_type": "merge", "type": "researchers", "id": "R0000123", "link": "https://api.researchmap.jp/{permalink}"} {"no": 1, "line": 110, "code": "200", "action": "update", "action_type": "doc", "type": "published_papers", "id": "123", "link": "https://api.researchmap.jp/{permalink}/published_papers/123"} {"no": 1, "line":120,"code":304,"action":"insert","action_type":"merge","type":"association_membership s","link":"https://api.researchmap.jp/{permalink}/association_memberships/107","messages":[ {"no": 1, "code":304,"message":"not_changed","message_description":"There is no change, so it was not updated[id=107]."}]} ※ 1 行目に一括更新を行ったサマリー情報、2 行目以降にそれぞれの行についての情報を返します。 ※ ステータスコードは、一般的なエラー処理とは異なりインポートの status により以下のように なります。 ➢ アップロード中、処理待ち、チェック処理中: 「102 Processing」
34
➢ インポート処理中:「202 Accepted」 ➢ チェック完了、インポート完了:「200 OK」
※ 整合性チェック処理の結果、エラーが1 件でもあればインポート処理(rmap.v2 への登録)を行 いません。エラーチェック後の登録処理にてエラーとなった場合、エラーとなったデータを除き 登録されます(同一ファイル内の別の行の実行結果によってConflict を起こす場合など)。
レスポンスの各項目を以下で説明します。 No. 項目名 内容 備考 1. no File No. API の更新時は常に1。 画面から複数ファイルをZip で固めてインポートし、その 結果を本API にて確認する 際には、ファイル毎に連番が つきます。 2. line 行数
code ステータスコード Delete に成功すると204 に しています。 上部のcode は処理全体の最 も大きいステータスコードが 表示されます。 4. status 以下の状態があります。 uploading: 「アップロード中」 waiting: 「処理待ち」 checking: 「チェック中」 processing: 「処理中」 checking_completed: 「チェッ ク完了」 completion: 「完了」 error: 「エラー」
start_datetime 処理開始日時
end_datetime 処理終了日時 status が checking_completed、 completion、error の場合の み出力。 7. estimated_end_datetime 完了予想日時 status がchecking、 processing、error の場合の み出力。 8. total_items トータル件数 status がuploading 、