LANG SELRCT

コードを書く場所

2019年7月30日火曜日

JIRA APIでresponseのemailAddressが空になるときの対応


JIRA APIでusernameが廃止されてaccountIdを使う仕様変更の対応のため、
JIRAのAPIでemailからaccountIdを取得したいという記事を書いて、
以下のrequestでemailアドレスからaccountIdを取得できました。

https://SITENAME.atlassian.net/rest/api/3/user/assignable/search?project=PROJECT_KEY&query=EMAILADDRESS
(SITENAMEとPROJECT_KEYとEMAILADDRESSは各自の設定)


しかし、一難去ってまた一難というか
ユーザ側の設定でemailアドレスを非公開にしていると、APIのresponseにはemailAddressの値が入らず、空で返ってくるという自体に遭遇しました。
(自分のアカウントではresponseにemailAddressは入ってきますが、他のユーザの情報を取得する際に空になる)


上記のrequestではEMAILADDRESSが部分一致するユーザ情報がなぜか「配列」で返ってくるため、一意のユーザ情報を取得するにはresponseの中から更に絞り込まないといけない。
ユーザ情報のkeyとnameが廃止されるので、emailAddressでの一致を試みるしかなくなるが、それが空で返ってくる。


対応策

各ユーザが以下の設定を行うとemailAddressに値が入るようになる


アカウントの管理
https://id.atlassian.com/manage-profile/profile-and-visibility


「Only you and admins」を「Anyone」に変更します
(日本語表記の場合:「自分と管理者のみ」を「全員」に)


こうなればAPIのresponseのemailAddressに値が入る


補足

または最近追加されたらしい「組織」という機能を作成して、APIユーザにその組織の管理権限を付与すると同じく解決するらしいのですが、「組織」について調べてみると、ドメインの検証でDNSホストの設定が必要など、もう一段調べることが増えたので、一旦ここで離脱。


補足2
「Public sharing」「User email visibility」など関連しそうな表現の項目が「General configuration」にありますが、これをONにしてもAPIのresponseには関係なかった。


参考

Email Visibility in Site Admin User Search
https://community.developer.atlassian.com/t/email-visibility-in-site-admin-user-search/30493