開発者ポータルREST APIとは
API Connectでは、開発者ポータル機能を提供しており、API Connectで公開したAPIの仕様は、開発者ポータルに表示されます。表示可否や利用可否は、開発者ポータルにログインする開発者ごとに制御することができます。
API Connectでは、この開発者ポータル用のREST APIを提供しており、開発者ポータル上で提供している操作の一部が、API経由でも実行できる形になっています。この開発者ポータルREST APIを使って、自社の独自のWebサイト上にAPIの仕様を表示したり、プロバイダー管理者側における、運用や管理に利用することもできます。
参考マニュアル
やりたいこと
今回は、開発者ポータルREST APIを使って、プロバイダー側の管理者権限で、公開しているAPIを利用(利用登録)しているアプリケーションの情報を取得してみたいと思います。
この情報は、APIマネージャーというプロバイダー側の管理者向け画面上では見ることができますが、この情報をAPIで一覧取得します。
実行方法について
API Connectのクラスターは、「プロバイダー組織」という論理区画に分けることができ、「プロバイダー組織」の中に「カタログ」と呼ばれるデプロイ先の環境を複数構成することができます。
開発者ポータルは、この「カタログ」単位で構成され、開発者ポータルREST APIを実行する際には、どの「プロバイダー組織」のどの「カタログ」に対してAPIを実行するのかを指定しなければなりません。
これを指定する方法として以下の3つが用意されています。
(参考マニュアル : [IBM API Connect v5.0 Knowledge Center : 開発者ポータル REST API の呼び出し)
以下のうち、今回は、1.の方法で実行します。
-
X-IBM-APIManagement-Context
ヘッダーに「プロバイダー組織名」、「カタログ名」を指定する -
「開発者ポータル API 呼び出しのホスト名」を使ってAPIを呼び出す
この場合、APIマネージャー上の「カタログ」の設定にて、「開発者ポータル API 呼び出しのホスト名」を別名として設定しておく必要があります。
また、管理サーバーのアドレスと「開発者ポータル API 呼び出しのホスト名」をDNSに登録しておく必要があります。 -
X-Override-Host
ヘッダーに「開発者ポータル API 呼び出しのホスト名」を指定して、APIの呼び出しは、管理サーバーに対して行うこの場合、2.と同様に、APIマネージャー上の「カタログ」の設定にて、「開発者ポータル API 呼び出しのホスト名」を別名として設定しておく必要があります。
DNS登録は必要ありません。
Cloud Managerの「システム」という管理者ロールで各種操作を行います。
ツールとしては、curlを利用します。
実行
公開しているAPIを利用しているアプリケーションを取得するには、開発者組織ID
と製品ID
が必要になるので、まずはこれらの情報を開発者ポータルREST APIで取得します。
開発者組織IDの取得 - 開発者組織の作成
製品を利用(サブスクライブ)しているアプリケーションの取得は、「開発者組織」単位で行うため、開発者組織IDが必要です。開発者組織IDは開発者組織作成時に発行されます。
以下は開発者組織の作成例です。devorg01という開発者組織を作成する場合の例です。
レスポンスデータとして開発者組織IDが取得できます。
# パラメーターセット
PROVIDER_ORG_NAME=provider01 # プロバイダー組織の名前
CATALOG_NAME=test3 # カタログの名前
MANAGEMENT_SERVICE_ADDRESS=mgt.test.com # 管理サーバーのアドレス
SYSTEM_USER=systemuser@**.* # システムロールのユーザー
SYSTEM_USER_PWD=******** # システムロールのユーザーのパスワード
curl -k -u cmc/${SYSTEM_USER}:${SYSTEM_USER_PWD} -H "X-IBM-APIManagement-Context: ${PROVIDER_ORG_NAME}.${CATALOG_NAME}" -H 'Content-Type: application/json' -X POST https://${MANAGEMENT_SERVICE_ADDRESS}/v1/portal/orgs -d '{
"name": "devorg01"
}'
{
"id": "598bce44e4b01755c9e55c91",
"name": "devorg01",
"url": "https://mgt.test.com/v1/portal/orgs/598bce44e4b01755c9e55c91"
}
開発者組織IDの取得 - 開発者組織情報の取得
開発者組織IDは、開発者組織作成後も以下のように確認することができます。APIリクエストを実行したユーザーが属している開発者組織の情報が取得できます。
# パラメーターセット
PROVIDER_ORG_NAME=provider01 # プロバイダー組織の名前
CATALOG_NAME=test3 # カタログの名前
MANAGEMENT_SERVICE_ADDRESS=mgt.test.com # 管理サーバーのアドレス
SYSTEM_USER=systemuser@**.* # システムロールのユーザー
SYSTEM_USER_PWD=******** # システムロールのユーザーのパスワード
curl -k -u cmc/${SYSTEM_USER}:${SYSTEM_USER_PWD} -H "X-IBM-APIManagement-Context: ${PROVIDER_ORG_NAME}.${CATALOG_NAME}" -H 'Content-Type: application/json' -X GET https://${MANAGEMENT_SERVICE_ADDRESS}/v1/portal/orgs
[
{
"roles": [
"598bce45e4b01755c9e55c92"
],
"id": "598bce44e4b01755c9e55c91",
"name": "devorg01",
"url": "https://mgt.test.com/v1/portal/orgs/598bce44e4b01755c9e55c91",
"owner": true
},
{
"roles": [
"598bd958e4b01755c9e55ffa"
],
"id": "598bd957e4b01755c9e55ff9",
"name": "devorg02",
"url": "https://mgt.test.com/v1/portal/orgs/598bd957e4b01755c9e55ff9",
"owner": true
}
]
製品IDの取得
公開するAPIは、「製品」にパッケージングして公開しています。
公開している製品の情報を開発者ポータルREST APIで取得します。
以下は公開されている製品情報の取得例です。
loanservice
が公開されている製品として取得でき、製品IDも同時に取得できています。
# パラメーターセット
PROVIDER_ORG_NAME=provider01 # プロバイダー組織の名前
CATALOG_NAME=test3 # カタログの名前
MANAGEMENT_SERVICE_ADDRESS=mgt.test.com # 管理サーバーのアドレス
curl -k -H "X-IBM-APIManagement-Context: ${PROVIDER_ORG_NAME}.${CATALOG_NAME}" -X GET https://${MANAGEMENT_SERVICE_ADDRESS}/v1/portal/products
[
{
"id": "59914b22e4b01755c9e719ee",
"info": {
"name": "loanservice",
"title": "loanservice",
"version": "1.0.0"
},
"url": "https://mgt.test.com/v1/portal/products/59914b22e4b01755c9e719ee",
"status": "published"
}
]
公開しているAPIを利用しているアプリケーションの取得
開発者組織IDと製品IDを使って、APIのセットである「製品」に利用登録しているアプリケーションを取得します。
以下は実行例です。
以下のように、製品loanservice
を利用登録しているアプリケーションとして、サンプルアプリ1
とサンプルアプリ2
が取得できました。
# パラメーターセット
PROVIDER_ORG_NAME=provider01 # プロバイダー組織の名前
CATALOG_NAME=test3 # カタログの名前
MANAGEMENT_SERVICE_ADDRESS=mgt.test.com # 管理サーバーのアドレス
SYSTEM_USER=systemuser@**.* # システムロールのユーザー
SYSTEM_USER_PWD=******** # システムロールのユーザーのパスワード
orgID=59915482e4b01755c9e71dae # 開発者組織ID
productID=59914b22e4b01755c9e719ee # 製品ID
curl -k -u cmc/${SYSTEM_USER}:${SYSTEM_USER_PWD} -H "X-IBM-APIManagement-Context: ${PROVIDER_ORG_NAME}.${CATALOG_NAME}" -X GET https://${MANAGEMENT_SERVICE_ADDRESS}/v1/portal/orgs/${orgID}/products/${productID}/subscriptions
[
{
"id": "59915af9e4b01755c9e71fff",
"app": {
"id": "599156a5e4b01755c9e71ed2",
"name": "サンプルアプリ1"
},
"product": {
"id": "59914b22e4b01755c9e719ee",
"name": "loanservice",
"version": "1.0.0"
},
"plan": "Basic",
"approved": true,
"createdAt": "2017-08-14T08:10:33.909+0000",
"updatedAt": "2017-08-14T08:10:33.909+0000",
"url": "https://mgt.test.com/v1/portal/orgs/59915482e4b01755c9e71dae/apps/599156a5e4b01755c9e71ed2/subscriptions/59915af9e4b01755c9e71fff"
},
{
"id": "59925dc5e4b01755c9e778b3",
"app": {
"id": "59925913e4b01755c9e77649",
"name": "サンプルアプリ2"
},
"product": {
"id": "59914b22e4b01755c9e719ee",
"name": "loanservice",
"version": "1.0.0"
},
"plan": "Basic",
"approved": true,
"createdAt": "2017-08-15T02:34:45.265+0000",
"updatedAt": "2017-08-15T02:34:45.265+0000",
"url": "https://mgt.test.com/v1/portal/orgs/59915482e4b01755c9e71dae/apps/59925913e4b01755c9e77649/subscriptions/59925dc5e4b01755c9e778b3"
}
]
以上、開発者ポータル REST APIを使って、プロバイダー側の管理者権限で、公開しているAPIを利用しているアプリケーションの一覧を取得する方法でした。
開発者ポータル REST APIは便利なので、運用管理にもいろいろ使えそうです。