LoginSignup
7
2

More than 5 years have passed since last update.

API Connectで、公開しているAPIを利用しているアプリケーションの一覧を取得する方法

Last updated at Posted at 2017-08-15

開発者ポータル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.の方法で実行します。

  1. X-IBM-APIManagement-Contextヘッダーに「プロバイダー組織名」、「カタログ名」を指定する

  2. 「開発者ポータル API 呼び出しのホスト名」を使ってAPIを呼び出す

    この場合、APIマネージャー上の「カタログ」の設定にて、「開発者ポータル API 呼び出しのホスト名」を別名として設定しておく必要があります。
    また、管理サーバーのアドレスと「開発者ポータル API 呼び出しのホスト名」をDNSに登録しておく必要があります。

  3. 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は便利なので、運用管理にもいろいろ使えそうです。

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2