見出し画像

PythonとジョーシスのAPIを使ってメンバー一覧を取得してみた。


修正履歴

・2024/01/26:初版

やること

ジョーシスのAPIを使って管理下のメンバー一覧を取得してみました。

事前準備

コードを書く前にジョーシス側の準備が必要になります。
以下のことが必要です。
・APIユーザーキーを作成。
・APIシークレットキーを作成。

これらのやり方は以下のジョーシスのドキュメントに記載されていますので、参照しつつ作成していきましょう。

コードを書く前に

必要な関数をpip installしておきましょう。

pip install --upgrade requests

コードを書く

では早速コードを書いていきましょう!

main関数の雛形

まずは雛形から。
モジュールとしての再利用性のためこのように書くことが推奨されていますので、それに従いましょう。
mainの上で行われているimportはこれから利用する関数群を呼び出しています。

import requests
import json

def main():
    # メインのプログラムのロジック

if __name__ == '__main__':
    main()

Token呼び出し

ではmainの中を書いていきましょう。
まずはAPIを使えるようにするためにAPIユーザーキーとAPIシークレットキーを使ってTokenを取得する処理です。
{xxxx}で記述しているところは各社に合わせて書き換えて下さい。
(注意)各所にprint文を入れているのはデバッグのためです。

またテストなのでキー等をコードに直接書いていますが、業務で使う際にはファイルに格納するなり工夫をして下さい。

import requests
import json

def main():
    print('開始-main')

    print('開始-Token取得')
    str_url_api_base = "https://developer.josys.it/api"
    str_url_token = "/v1/oauth/tokens"
    str_url_auth = str_url_api_base + str_url_token
    print('URL:[' + str_url_auth + ']')
    
    str_json_token = {
        'grant_type': 'client_credentials',
        'api_user_key': 'xxxx',
        'api_user_secret': 'xxxx'
    }

    try:
        str_res_token = requests.post(str_url_auth, json=str_json_token)
    except Exception as e:
        print(f'Token取得中にエラーが発生しました: {str(e)}')


    #print('return_all:[' + str_res_token.text + ']')
    json_response_token = str_res_token.json()

    print('return_token_type:[' + json_response_token['token_type'] + ']')
    print('return_expires_in:[' + str(json_response_token['expires_in']) + ']')
    print('return_id_token:[' + json_response_token['id_token'] + ']')

    print('終了-Token取得')

        print('終了-main')

if __name__ == '__main__':
    main()

ユーザー一覧取得

Tokenが呼び出せたら、今度はそのTokenを使ってユーザー一覧を取得してみましょう。
今回は姓と名とメールアドレスを出力しています。

import requests
import json

def main():
    print('開始-main')

    print('開始-Token取得')
        ・・・
    print('終了-Token取得')

    print('開始-ユーザー一覧取得')
    str_url_token = "/v1/user_profiles"
    str_url_auth = str_url_api_base + str_url_token
    print('URL:[' + str_url_auth + ']')

    str_json_userlist = {
        'page': 1,
        'per_page': 5,
        'sort_by': 'user_id',
        'sort_direction': 'asc'
    }

    str_json_headers = {
        'Authorization': 'Bearer ' + json_response_token['id_token'],
        'Content-Type': 'application/json'
    }

    str_res_userlist = requests.get(str_url_auth, headers=str_json_headers , params=str_json_userlist)
    print('return_all:[' + str_res_userlist.text + ']')

    json_response_userlist_headers = str_res_userlist.headers 
    json_response_userlist_body = str_res_userlist.json()

    print('return_header_Content-Type:[' + json_response_userlist_headers.get('Content-Type') + ']')
    print('return_header_x-page:[' + str(json_response_userlist_headers.get('x-page')) + ']')

    for jsonObj in json_response_userlist_body['data']:
        print(jsonObj.get('last_name'))
        print(jsonObj.get('first_name'))
        print(jsonObj.get('email'))

    print('終了-ユーザー一覧取得')

    print('終了-main')

if __name__ == '__main__':
    main()

実行結果

これで文字列として姓と名とメールアドレスを取得できたかと思います。

(testxxx) xxxx % python3 testxxx.py 
山田
一郎
ichiro.yamada@xxx.co.jp
上田
花子
hanako.ueda@xxx.co.jp
(testxxx) xxxx % 

あとはこれを例えばなにかの抜け漏れ防止に利用したりできるかなと思います。
今後はAPIをさらに発展させ、Saasアカウント発行やアカウント削除をできるようになるとありがたいですね。

以上

この記事が気に入ったらサポートをしてみませんか?