🙄

利用中のSaaS残ライセンスをAPIで確認する

2022/09/18に公開

この記事はある日急に「やばい、ライセンスが足りない!」「今から発注しても間に合わない!」なんてことにならないよう、APIで様々なSaaSのライセンスをチェックする方法についてまとめたものです。
なお、コードサンプルはすべてPythonで、対象サービスは事前にライセンスを追加しないと利用できないサービスが中心となっています。

GitHub Enterprise

GitHubはREST APIでは取得ができないため、GraphQL APIで取得する必要があります。GraphQL APIについては こちら を、ライセンス数取得用のAPIについては こちらをを参照。

リクエストサンプル

アクセストークンと組織名称は適宜書き換えてください。

import requests

url = 'https://api.github.com/graphql'
headers = {
    'Authorization': 'Bearer [アクセストークン]')
}
query = """
{
    enterprise(slug:[組織名称]) {
	billingInfo {
	    allLicensableUsersCount totalLicenses
	}
    }
}
"""

requests.post(url, headers=headers, json={'query': query})

レスポンス

リクエストが正常に実行されると、allLicensableUsersCountには現在使用中のライセンス数が、totalLicensesには契約している合計ライセンス数が返却されます。

Dropbox Business

DropboxのAPIを利用する場合は、予めDropboxアプリを作成し、必要な権限設定などを行った上でAPI実行に必要なトークンを発行する必要があります(SlackやZoomなどと同じ構成)
Dropboxアプリの作成方法については こちら を、ライセンス数取得用のAPIについては こちらを参照。

リクエストサンプル

アクセストークンは適宜書き換えてください。

import requests

url = "https://api.dropboxapi.com/2/team/get_info"
headers = {
    'Authorization': 'Bearer [アクセストークン]')
}
requests.post(url, headers=headers)

レスポンス

リクエストが正常に実行されると、num_provisioned_usersには現在使用中のライセンス数が、num_licensed_usersには契約している合計ライセンス数が返却されます。

Dialpad

Dialpadは事前にAPIキーを発行して利用します。APIキー作成については こちらを、ライセンス数取得用APIについては こちらを参照。

リクエストサンプル

オフィスIDとアクセストークンは適宜書き換えてください。

import requests

url = "https://dialpad.com/api/v2/offices/オフィスID/available_licenses"
headers = {
    "Authorization": 'Bearer [アクセストークン]')
}

requests.get(url, headers=headers)

レスポンス

リクエストが正常に実行されると、talk_linesに利用可能な残ライセンス数が返却されます。

WithSecure

WithSecureもDialpad同様、事前にAPIキーを発行しますが、それに加えて、別途LoginAPIでセッショントークンを払い出す必要があります。APIキー作成については こちらを、ライセンス数取得用APIについては こちらを参照。

リクエストサンプル(ログイン)

ユーザーIDパスワードは適宜書き換えてください。

import requests

url = "https://jp3.psb.fsapi.com/mp/v1/authentication/login"
payload = json.dumps({
    "username": [ユーザーID],
    "password": [パスワード]
})
headers = {
    'Content-Type': 'application/json'
}

requests.post(url, headers=headers, data=payload)

レスポンス

リクエストが正常に実行されると、tokenにAPI実行に必要なトークンが返却されます。

リクエストサンプル(ライセンス取得)

companyUuidとsubscriptionIdは別途 こちらのAPIで取得したもので書き換えてください。
セッショントークンはログイン時に返却されたトークンを、APIトークンには事前に用意したAPIトークンをそれぞれ書き換えてください。

import requests

url = "https://jp3.psb.fsapi.com/mp/v1/companies/[companyUuid]/subscriptions/{subscriptionId}"
headers = {
    'Authorization': 'Bearer [セッショントークン]',
    'X-API-Key': [APIトークン]
}

requests.get(url, headers=headers)

レスポンス

リクエストが正常に実行されると、usedLicensesには現在使用中のライセンス数が、totalLicensesには契約している合計ライセンス数が返却されます。

まとめ

以上、SaaSのライセンス関連情報をAPIで取得する流れのまとめでした。
ご利用の際にはトークンなどCredential情報の取り扱いにはご注意ください、また、各APIは用法用量を守って自己責任でお願いします!

Discussion