Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

APIでNowプラットフォーム内の全てのユーザーメールアドレス取得方法

Atsutoshii
Giga Contributor

こんにちは。

 

APIの取得についてご質問です。初歩的なご質問で申し訳ないです。

Service Now製アプリと開発プラットフォームでオリジナルアプリの管理が全て

Nowプラットフォームで管理可能であるという認識をしております。

E0DF3D21-BC0A-460F-90F3-8F33C25A4F6B.png

参照元:https://jinzai.edifist.co.jp/article/what-is-servicenow1/

 

標題の通りですが、APIでNowプラットフォーム内で複数サービスを契約していた場合に全てのユーザーのメールアドレス取得方法について教えてください。

 

1. APIキーの取得方法について

そもそもAPIキーの取得方法が分からないため参考になるURLありましたらご教示ください

 

2.ユーザーのメールアドレス取得方法

APIを介してNowプラットフォームで管理できる全てのユーザーのメールアドレス取得についてエンドポイントを教えてください

 

よろしくお願いいたします。

 

 

 

  • API
3件の返信3

iwai
Giga Sage

ServiceNowのUser Table を Rest APIで取得することで、すべてのUserのメールアドレスを取得するのはどうでしょうか。

Tableを取得する RestAPIについては以下のドキュメントに記載されています。
テーブル API (servicenow.com)

 

ServiceNowのREST API エクスプローラーを使えば ServiceNowの中で動作確認できます、エンドポイントやパラメーター、データフォーマットなどを確認できます。APIにアクセスするサンプルも見ることが出来ます、ServiceNow Script、cURL、Python、Ruby、JavaScript、Perl、Powershellのサンプルを確認できます。
REST API エクスプローラーにアクセスする (servicenow.com)


認証情報は、IDとパスワードによるBasic認証が基本です。ユーザーのIDとパスワードで認証できます。他にも認証方法は設定できます。
認証 (servicenow.com)

 

ServiceNowのUser Table にはない 他の情報でもTable APIで他のTableを参照できるので、様々な情報を取得可能です。

Atsutoshii
Giga Contributor

@iwai 
ご返信いただきありがとうございます。

教えていただいた情報をもとに以下のようなコマンドを実行したところ、
ユーザー情報が取れました。

 

 

curl -X GET \
'https://<your-instance>.service-now.com/api/now/table/sys_user' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic <base64-encoded-credentials>

 


取得結果一部抜粋

 

{
  "result": [
    {
      "calendar_integration": "1",
      "country": "",
      "user_password": "jp0bGpU0lW",
      "last_login_time": "2019-04-05 22:16:30",
      "source": "",
      "sys_updated_on": "2024-07-22 05:28:25",
      "building": "",
      "web_service_access_only": "false",
      "notification": "2",
      "enable_multifactor_authn": "false",
      "sys_updated_by": "developer.program.hop@snc",
      "sys_created_on": "2019-04-05 21:09:12",
      "sys_domain": {
        "link": "https://dev249763.service-now.com/api/now/table/sys_user_group/global",
        "value": "global"
      },
      "state": "",
      "vip": "false",
      "sys_created_by": "admin",
      "zip": "",
      "home_phone": "",
      "time_format": "",
      "last_login": "2019-04-05",
      "default_perspective": "",
      "active": "true",
      "sys_domain_path": "/",
      "cost_center": "",
      "phone": "",
      "name": "survey user",
      "employee_number": "",
      "password_needs_reset": "false",
      "gender": "",
      "city": "",
      "failed_attempts": "0",
      "user_name": "survey.user",
      "roles": "",
      "title": "",
      "sys_class_name": "sys_user",
      "sys_id": "005d500b536073005e0addeeff7b12f4",
      "federated_id": "UU/OJDA/H2viaQb8VqlJIYSYKwmbkOCLoFDQkTPv7XM=",
      "internal_integration_user": "false",
      "ldap_server": "",
      "mobile_phone": "",
      "street": "",
      "company": "",
      "department": "",
      "first_name": "survey",
      "email": "survey.user@email.com",
      "introduction": "",
      "preferred_language": "",
      "manager": "",
      "locked_out": "false",
      "sys_mod_count": "3",
      "last_name": "user",
      "photo": "",
      "avatar": "",
      "middle_name": "",
      "sys_tags": "",
      "time_zone": "",
      "schedule": "",
      "date_format": "",
      "location": ""
    },

 



ただし、取得できた件数が600件近くあり、利用しているアプリでのユーザー数を超過しているように思います。

 

追加で2点、ご質問がございます。

1. 利用しているアプリでフィルタをかける方法
自分が利用しているアプリでフィルタをかけるリクエスト方法があればご教示ください。


2. Table APIで取得できるアプリの範囲

開発したオリジナルアプリ、ServiceNow製のSaaSアプリにいずれのユーザー情報も取得可能という認識であっていますでしょうか?
取得できない製品や条件などあればご教示いただけると大変ありがたいです。

 

的確にご案内いただき大変ありがとうございます。

お手数ですが、ご確認いただけると大変ありがたいです。
どうぞよろしくお願いいたします。

 

sysparm_queryを使うことでフィルターをかけることが出来ます。
例  curl "https://<instance>.service-now.com/api/now/table/sys_user?sysparm_query=active%3Dtrue%5Edepartment%3D221f79b7c6112284005d646b76ab978c"

詳しい使い方や例もDocsに記載があります。 Table APIの GETの sysparm_query を確認してください。

テーブル API (servicenow.com)

 

ServiceNow のプラットフォームで利用するユーザーは sys_user に記録されていて、その他のアプリでも同じです。

しかしユーザーという言葉の範囲には、もっと別の観点でのユーザーを管理している場合もあります。
例えば外部の顧客名簿データを格納している場合、sys_user で管理するとServiceNow利用ユーザーになってしまうので不適切です。別のユーザーテーブルを利用します。もしくは広い意味で顧客は会社テーブルを利用している場合もあるかもしれません。
ServiceNowで取り扱う業務上のユーザーの概念は広範囲で、すべてのアプリケーションにおいて、すべてが sys_user に集約されているわけではないと言うことになります。
原則として ServiceNowを利用するユーザーは sys_user Tableに記録されています。そこに記録されていなければ ServiceNowを利用できないです。