現在GakuNin mAPで利用できるAPIは2種類あります。いずれもOpenSocialをベースとしたフォーマットでレスポンスはJSON形式です。
- API#People API
グループを指定してそのメンバーに関する情報を取得するためのAPI - API#Groups API
SPコネクタに接続しているグループに関する情報を取得するためのAPI
いずれも、認証は学認におけるSPメタデータに記載されている証明書を用いたTLSクライアント証明書認証により行います。証明書の extended Key Usage (eKU) に clientAuth が記載されていなければなりません。
また、mAPが提示する証明書も学認におけるSPメタデータに記載されているものとなりますので、SP側で適切に検証してください。
People API
リクエストURL
- メンバーのみを取得
https://map.gakunin.nii.ac.jp/api/people/@me/グループentityIDorID[?lang=言語] - 管理者のみを取得
https://map.gakunin.nii.ac.jp/api/people/@me/グループentityIDorID%2Fadmin[?lang=言語]
グループentityIDorID には グループentityID もしくは グループID を指定します。
グループentityID は、isMemberOfで取得することができる値をURLエンコードした値です。
例えば、isMemberOfで取得した値が下記の場合は、
(元の値)https://map.gakunin.nii.ac.jp/gr/GakuNinTF
URLエンコード後は、下記となります。
(変換後の値)https%3A%2F%2Fmap.gakunin.nii.ac.jp%2Fgr%2FGakuNinTF
※ %3A、%2Fのアルファベットは小文字も許容します。
また、グループentityIDの短縮形の グループID を利用することも可能です。
isMemberOfが上記の(元の値)とした場合、短縮形のグループIDは、GakuNinTFとなります。
管理者を取得する場合は、グループentityIDもしくはグループIDに %2Fadmin を付与します。
SPコネクタのグループentityIDもしくはグループIDに %2Fadmin を付与すると、SP管理者が取得できます。
設定値と取得できる値をまとめたものを以下に示します。
グループentityID/ID |
%2Fadmin |
取得値 |
---|---|---|
グループを指定 |
無 |
グループメンバー一覧 |
〃 |
有 |
グループ管理者一覧 |
SPコネクタを指定 |
無 |
仕様外 |
〃 |
有 |
仕様外 |
※ グループentityID/IDとして指定できるのは、SPコネクタに直接接続しているグループのみです。
言語 はオプション項目であり、レスポンスで返す言語を指定します。
指定できるTYPEは、en と ja で、下記の優先順位でレスポンスを返します。
リクエストURLの言語指定 > 英語入力 > 日本語入力
なお、英語、日本語ともGakuNin mAPに登録がなければ、当該属性自体が存在しない状態で返します。
下記に例を示します。
GakuNin mAPに、氏名「日/英」、自己紹介「英」、所属「日/英とも空欄」で登録されていた場合、
リクエストの言語指定が「ja」であった場合は、氏名「日」、自己紹介「英」、所属「無し」を、
リクエストの言語指定が「en」であった場合は、氏名「英」、自己紹介「英」、所属「無し」を、
リクエストの言語指定がない場合は、氏名「英」、自己紹介「英」、所属「無し」を返します。
項目 |
日本語の登録 |
英語の登録 |
lang=ja |
lang=en |
言語指定なし |
---|---|---|---|---|---|
氏名 |
有 |
有 |
日本語 |
英語 |
英語 |
自己紹介 |
- |
有 |
英語 |
英語 |
英語 |
所属 |
- |
- |
- |
- |
- |
レスポンス
上記リクエストのレスポンスを以下に示します。(見易くなるように整形しています)
{ "totalResults" : <ユーザ数>, "entry" : [ { "id" : "<mAPのeduPersonTargetedID>", "displayName" : "<氏名>", "aboutMe" : "<自己紹介>", "emails" : [ {"type" : "email", "value" : "<mAPに登録したメールアドレス>"} ], "languagesSpoken" : [ {"type" : "languageSpoken", "value" : "<mAPに登録した使用言語>"} ], "organizations" : [ {"type" : "organization","value" : {"name" : "<mAPに登録した所属>"}} ], "map_IdPEntityIDs" : [ {"type" : "map_IdPEntityID", "value" : "https://xxxxxx/idp/shibboleth"}, ... ], }, ... ] }
フィールド名 |
内容 |
備考 |
---|---|---|
totalResults |
ユーザ数(全ての属性が許可されない場合そのユーザ分は差し引く) |
Required |
id |
mAPのeduPersonTargetedID |
|
displayName |
氏名 |
|
aboutMe |
自己紹介 |
|
emails |
メールアドレス |
|
languagesSpoken |
使用言語 |
"en"もしくは"ja" |
organizations |
所属 |
|
map_IdPEntityIDs |
認証に利用するIdP(entityID) |
複数可 |
※ Required以外のフィールドは、利用者が同意したフィールドのみ送られます。また、全てのフィールドが存在しない(同意されていないもしくはSPが要求していない)場合はオブジェクトごと無くなります。
※ id には、mAPが発行する永続的な識別子のJavaScriptでの表現が入ります。SP毎に異なる値になりますが、同一SPに対しては同一ユーザについて常に同じ値を返します。
例: "https:\/\/map.gakunin.nii.ac.jp\/idp\/shibboleth!https:\/\/sp.example.ac.jp\/shibboleth-sp!S8Xi7R5Wf1pd8k8lq9eoiXyCtmw="
※ ここで送信される id と、ユーザ認証時にSimpleAggregationでmAPから送信されるeduPersonTargetedIDは一致します。
※ 特に、文字列中にUnicodeのコード表記(例:\u3042)の形式の文字を含む可能性があります。
※ 指定されたグループに下位グループが存在する場合、下位グループのメンバーも含まれます。
Groups API
リクエストURL
- SPコネクタに接続しているグループ情報の取得
言語]
言語 はオプション項目で、レスポンスで返す言語を指定します。
指定できるTYPEは、enとjaであり、下記の優先順位でレスポンスを返します。
リクエストURLの言語指定 > 英語入力 > 日本語入力
なお、英語、日本語ともGakuNin mAPに登録がなければ、当該属性自体が存在しない状態で返します。
下記に例を示します。
GakuNin mAPに、グループ名「日/英」、紹介文「日」で登録されていた場合、
リクエストの言語指定が「ja」であった場合は、グループ名「日」、紹介文「日」を、
リクエストの言語指定が「en」であった場合は、グループ名「英」、紹介文「日」を、
リクエストの言語指定がない場合は、グループ名「英」、紹介文「日」を返します。
項目 |
日本語の登録 |
英語の登録 |
lang=ja |
lang=en |
言語指定なし |
---|---|---|---|---|---|
グループ名 |
有 |
有 |
日本語 |
英語 |
英語 |
紹介文 |
有 |
- |
日本語 |
日本語 |
日本語 |
レスポンス
上記リクエストのレスポンスを以下に示します。(見易くなるように整形しています)
{ "totalResults" : <グループ数>, "entry" : [ { "id" : "<グループentityID>", "title" : "<グループ名>", "description" : "<グループの紹介>", "map_totalMembers" : <グループのメンバー数> }, ... ] }
※ <グループentityID> は、isMemberOfで取得することができるURL形式の値(のJavaScriptでの表現)
例: "https:\/\/map.gakunin.nii.ac.jp\/gr\/GakuNinTF"
※ このAPIで取得できるグループはSPコネクタに直接接続しているもののみです。上位グループ経由で接続している下位グループのグループ情報は含まれません。
※ <グループのメンバー数> には、管理者のみの人(管理者であるがメンバーでない人)は含まれません。また、属性送信に同意しているかどうかに関わらずカウントされますので、people APIを通して取得した数より大きい可能性があります。
※ 特に、文字列中にUnicodeのコード表記(例:\u3042)の形式の文字を含む可能性があります。
エラーレスポンス(共通)
HTTPステータス |
原因 |
---|---|
400 |
APIのURL不正 |
403 |
・提示された証明書が学認参加SPのものでない場合 |
404 |
指定されたグループがない場合 |
※ レスポンスに返すデータが0件の場合は空配列のentryを返します。