Graph API を使用した検索

Exchange Graph API を使用して、Exchange アセットで文字列値を検索します。各検索で返される値を指定できます。

Exchange Graph API は Anypoint Exchange および Anypoint Platform にアクセスします。検索には、非公開 Exchange のアセットにアクセスするための認証が必要です。MuleSoft 公開アセットのみを検索する場合、認証は必要ありません。

Exchange Graph API は、Anypoint Platform アカウントなしで使用し、MuleSoft によって一般公開されているアセットを検索できます。API を介して非公開コンテンツにアクセスするには、Anypoint Platform アカウントが必要です。

認証

認証には、アクセストークンまたは接続アプリケーションのいずれかを使用します。

認証は、MuleSoft によって作成されていないアセットを検索する場合にのみ必要です。

トークン認証を使用する手順は、次のとおりです。

  1. Anypoint Platform にログインします。

  2. cURL コマンドでアクセストークンを取得します。

Postman や別のアプリケーションを使用して HTTP コマンドを送信することもできます。

ANYPOINT_USERNAME​ を Anypoint Platform ユーザーアカウント名に置き換えて、​ANYPOINT_PASSWORD​ をそのパスワードに置き換えます。

curl --location --request POST 'https://anypoint.mulesoft.com/accounts/login' \
     --header 'Content-Type: application/json' \
     --header 'Accept: application/json' \
     --data-raw '{
        "username":"ANYPOINT_USERNAME",
        "password":"ANYPOINT_PASSWORD"
     }' | jq -r ".access_token"

API コールでこのアクセストークンを使用します。

組織のシステム管理者は、アクセストークンの有効期限を 15 分~ 180 分の値に設定します。検索やより多くの時間を必要とする他の操作を実行する場合、追加のトークンを要求する必要があります。

接続アプリケーション認証を使用する手順は、次のとおりです。

  1. 接続アプリケーションを作成​します。

  2. 基本認証を使用するか、クエリ変数認証を使用するかを選択します。

    基本認証とクエリ変数認証の両方が設定されている場合、API は基本認証を使用し、クエリ変数認証を無視します。

  3. 基本認証を使用するには、基本認証を指定し、​~~~Client~~~​ としてユーザー名、​clientID~?~clientSecret​ としてパスワードを定義します。

    1. clientID​ をクライアント ID に置き換えます。

    2. clientSecret​ をクライアントシークレットに置き換えます。

  4. クエリ変数認証を使用するには、クエリ変数の認証項目として接続アプリケーション認証を定義します。

    {
      "authorization": "Basic ABC123"
    }

    ABC123​ を、連結されたクライアント ID とクライアントシークレットの base64 エンコード ​~~~Client~~~:clientID~?~clientSecret​ に置き換えます。

Graph API のアクセス URL

Graph API には ​https://anypoint.mulesoft.com/graph/api/v1/graphql​ URL でアクセスできます。API を使用して 検索するには、検索文字列を含む POST コマンドを送信します。

例:

curl -X POST \
  https://anypoint.mulesoft.com/graph/api/v1/graphql \
  -H 'content-type: application/json' \
  -d '{"query": "{ assets(query: { searchTerm: \"searchTerm\" }) { groupId, assetId, version } }"}'

クエリ項目には、より多くのアセット項目を取得できる GraphQL クエリが含まれています。

{
  assets(asset: {groupId: "some-group-id", assetId: "some-asset-id", version: "some-version-1.2.3"}) {
    # Possible fields to retrieve
    groupId
    assetId
    version
    description
    name
    type
    contactName
    contactEmail
    tags {
      value
      key
    }
    createdBy {
      id
      userName
      firstName
      lastName
    }
    files {
      classifier
      packaging
      externalLink
      md5
    }
    rating
    numberOfRates
    createdAt
    organizationId
    assetLink
    runtimeVersion
    productAPIVersion
    dependencies {
      groupId
      assetId
      version
      name
      type
    }
    related(relationshipType: OtherVersions) {
      groupId
      assetId
      version
      name
      type
      runtimeVersion
      productAPIVersion
    }
  }
}

次の例では、Mule 4.x アセットのグループ ID、アセット ID、およびバージョンを取得できます。

curl -X POST \
  https://anypoint.mulesoft.com/graph/api/v1/graphql \
  -H 'content-type: application/json' \
  -d '{"query":"{assets(query: {tags: {key: \"min-mule-version\", value: \"4.0.0\"}}) {groupId assetId version}}"}'

非公開 Exchange のみを検索する

  1. 非公開 Exchange でアセットをクリックして、非公開 Exchange の組織 ID を取得します。

    URL の例を次に示します。

    https://anypoint.mulesoft.com/exchange/42424242/product-api/1.0.0/

    42424242​ が組織 ID です。

  2. organizationIds 項目を使用して、組織 ID を追加します。

    単一の組織 ID は次のようになります。

    organizationIds: ["42424242"]

    {
      assets(
        query: {
          searchTerm: "product",
          organizationIds: ["4141141", "32322", "2342345"]
        },
        latestVersionsOnly: true
      ) {
        assetId,
        description
      }
    }

    この例の出力は次のようになります。

    {
      "data": {
        "assets": [
          {
            "assetId": "product-datatype",
            "description": "Product Datatype Asset"
          },
          {
            "assetId": "product-api",
            "description": "Product API Asset"
          }
        ]
      }
    }

アセットライフサイクル状態

アセットとそのライフサイクル状態をコンシュームするには、​ANYPOINT_TOKEN​、​:groupId​、​:assetId​、​:version​ を対象の情報に置き換えて、次のコマンドを実行します。

curl -X POST \
  https://anypoint.mulesoft.com/graph/api/v2/graphql \
  -H 'Authorization: bearer ANYPOINT_TOKEN' \
  -H 'content-type: application/json' \
  -d '{"query":"{asset(groupId: \":groupId\",assetId: \":assetId\",version: \":version\"){groupId assetId version status}}"}'

ライフサイクル状態でアセットを検索するには、​ANYPOINT_TOKEN​ を対象の情報に置き換えて、​[development, published, deprecated]​ を目的のライフサイクル状態のリストに置き換えて、次のコマンドを実行します。

curl -X POST \
  https://anypoint.mulesoft.com/graph/api/v2/graphql \
  -H 'Authorization: bearer ANYPOINT_TOKEN' \
  -H 'content-type: application/json' \
  -d '{"query":"{assets(status:[development, published, deprecated]){groupId assetId version status}}"}'

リファレンス: クエリ検索条件パラメーター

各アセットに関する追加情報を表示する検索条件を指定できます。

次の検索条件で、クエリ出力を絞り込むことができます。

パラメーター 説明

assetId

各アセットのアセット ID。

createdAt

アセットの作成日時 (例: 2018-08-11T04:48:20.585Z)。

createdBy { id, userName, firstName, lastName }

アセットの作成者を表示します。

dependencies { groupId, assetId, version, name, type }

リストされたアセットが依存するアセットを返します。

files { classifier, packaging, externalLink, md5 }

ファイル情報。

name

アセット名。

contactName

アセットについて連絡するユーザーの名前。

contactEmail

アセットについて連絡するユーザーのメールアドレス。

numberOfRates

アセットの星による評価の数。

organizationId

アセットの組織 ID。

rating

アセットの星による評価の値。

runtimeVersion

Mule Runtime バージョン。

tags { value, key, mutable }

アセットタグ。ユーザーインターフェースでパブリッシュ時に作成されたタグは、​value​ タグのみになります (キーはありません)。ユーザーインターフェースで作成されたタグは変更可能で、その他のタグは変更できません。キーと値のあるタグは、アセットを説明するために Exchange によって作成された特別なタグです。

type

Exchange の [All Types (すべてのタイプ)] メニューに対応する小文字の connector、template、example、rest-api、soap-api、raml-fragment、custom の値。

version

アセットのバージョン。

groupId

アセットのグループ ID。