検索アクションにより、任意のエンドポイントに問い合わせて、フィルタリングされた目的のデータを受け取ることができます。ユーザーは、返答範囲を調整するフィルターを1つ以上追加することで応答を操作することができます。APIリクエストで使用できるフィルターの数に制限はありません。

バージョン3のAPI検索リクエストの詳細

こちらが検索リクエストの例です。

終着点
リクエストのオブジェクト、またはオブジェクトの集合を表します。

上記の例では、エンドポイントがソースであり、APIリクエストでできることはユーザーデータオブジェクトを操作するために特別に設計されたアクションに限定されます。

操作
指定されたエンドポイントに対して取るべきアクションを指定します。

上記の例では、アクションは「Search」です。検索は、特定のフィルターセットを満たすエンドポイントからデータを取得するために使われます。

フィルターアレイ
APIリクエストによってデータオブジェクトが返される前に満たなければならない必要なパラメータのリストを保持します。検索は無限に多くのフィルターを持ち、それらは配列形式でフォーマットされます。配列とは、特定のタスクを達成するために相互に関連するオブジェクトやアイテムの配置として定義されます。
バージョン3のAPIでは、配列は次のように構成されています: {KeyValue}
  • キー: 検索属性は二重引用符で囲む必要があります(「)。
  • [値]: キーに照合する文字列または数字。例えば: action=search&args=[{"full_name":"Steve Joe"}]、「full_name」( キー)「Steve Joe」( 値)であるレコードのみを返します。Key:Value構造に合い、コンマで区切られている場合、任意の数のフィルターを使用できます。

API検索リクエストにフィルター値を追加する際、テキスト文字列は引用符の中に収まらなければなりません。

Minitab Connect APIエンドポイントの検索アクションは単純なクエリに限定されます。複合検索の要求は異なるキーに対して行われなければなりません。たとえば次のようになります。{"A":"Bob"},{"B":"Test"}。同じ検索リクエストでキーを2回問い合わせると、2つ目の条件のみに一致するすべての結果を含む応答が得られます。単一のキーに対する複雑なクエリは、js_filterを用いるソースインターフェースエンドポイントを通じて可能です。

API応答データ

成功したバージョン3のAPIリクエストは、JSONオブジェクトの形でデータを返します。この例では、シンプルなAPI応答に焦点を当てます。

バージョン3のAPIリクエスト

使用されるAPIリクエストは上記の「Example API Request」です。1例の内訳は以下の通りです。

https://connect.minitab.com/api/3/User?apikey=45354645654474127781&action=search&args=[{"full_name":"スティーブ・ジョー"}]

  • このリクエストは https://connect.minitab.com/ システムに接続され、 /api/3のバージョン3のAPIリクエストであることを指定します。
  • エンドポイント/ユーザーがAPIリクエストの核であり、その後のすべてのリクエストはそれに指向します。この例では、ユーザーエンドポイントへのアクセスが要求されます。
  • アクセスを許可する前に、システムはリクエストが認可されたソースから来ているかどうかを判断しなければなりません。リクエストはサーバーが認証するための認証情報を提供します ?apikey=4535464564474127781 2
  • これはリクエストURLの最初の変数であるため、クエスチョンマーク(?)を付け加える必要があります。
  • 認証を通過すると、システムはアクションに移行します。&action=search この操作により、検索パラメータを決定するフィルター配列を受け入れるようシステムが設定されます。

    この設定変数はAPIキーからアンパサンド(&)で区切られています。最初の変数を除くすべての変数にはアンパサンドが付加されます。

  • この時点でフィルター配列が読み込まれます。&args=[{"full_name":"Steve Joe"}] フィルター配列はシステムにUserdataオブジェクトを検索し、「Steve Joe」と等しい属性full_nameを持つすべてのオブジェクトを返すよう指示します。
  • システムはすべての結果を含むJSONオブジェクトを返します。

応答対象

APIリクエストから受信されるレスポンスは、属性「fname」と「Steve」の値を持ったすべてのユーザーデータオブジェクトを含むJSONオブジェクトです。すべてのレスポンスオブジェクトは同じ基本構造を持ち、JSON形式の文字列として返されます。

JSONフォーマットされた文字列

{"data":[{"type":"User","id":"999","attributes":{"user_id":"999","user_guid":"558877tu8822","full_name:"Steve
	 Joe","email":"Steve_Smith@minitab.com","phone":"","user_type_id":"66","cust_id":"1","adobe_key":null,"login":null,"theme":"","last_active":null,"is_active":"1","exceptions":[],"notes":"","two_factor":"0","auth_token":null,"expires":null,"password_history":null,"access_type":"40","notification_preference":"noti","primary_id":"user_id","primary_guid":"user_guid"},"meta":{"valid":true,"getters":{"EXCEPTIONSON":"getExceptionsOn","FULLUSERLIST":"getFullUserList","CUSTOMERUSERLIST":"getCustomerUserList","NOTIFICATIONS":"getNotifications","DBSTATUS":"getDBStatus","DBTABLES":"getDBTables","DBVIEWS":"getDBViews","JOBS":"getJobs","UIREFRESH":"getUIRefresh","USERGUID":"getUserGUID","USERID":"getUserID","NAME":"getName","FULLNAME":"getFullName","FNAME":"getFName","MNAME":"getMName","LNAME":"getLName","EMAIL":"getEmail","PHONE":"getPhone","ADOBEKEY":"getAdobeKey","LOGIN":"getLogin","CUSTID":"getCustId","USERTYPEID":"getUserTypeID","THEME":"getTheme","LASTACTIVE":"getLastActive","ISACTIVE":"getIsActive","EXCEPTIONS":"getExceptions","NOTES":"getNotes","TWOFACTOR":"getTwoFactor","AUTHTOKEN":"getAuthToken","EXPIRES":"getExpires","PASSWORDHISTORY":"getPasswordHistory","CUSTOMERSTATS":"getCustomerStats","RELATIVES":"getRelatives","ACCESSTYPE":"getAccessType","NOTIFICATIONPREFERENCE":"getNotificationPreference","ACTIVEUSERS":"getActiveUsers","CONTYPE":"getConType","ID":"getID","PRIMARYID":"getPrimaryID","GUID":"getGUID","PRIMARYGUID":"getPrimaryGUID","PROPERTIES":"getProperties"},"setters":{"CDBO":"setCDBO","USERGUID":"setUserGUID","FNAME":"setFName","MNAME":"setMName","LNAME":"setLName","EMAIL":"setEmail","PHONE":"setPhone","ADOBEKEY":"setAdobeKey","LOGIN":"setLogin","CUSTID":"setCustID","USERTYPEID":"setUserTypeID","THEME":"setTheme","LASTACTIVE":"setLastActive","ISACTIVE":"setIsActive","PASSWORD":"setPassword","NOTES":"setNotes","TWOFACTOR":"setTwofactor","AUTHTOKEN":"setAuthToken","EXPIRES":"setExpires","PASSWORDHISTORY":"setPasswordHistory","ACCESSTYPE":"setAccessType","NOTIFICATIONPREFERENCE":"setNotificationPreference","ID":"setID","DBO":"setDBO"},"actions":{"load":{"parameters":[{"name":"args"}]},"loadExceptions":{"parameters":[]},"addException":{"parameters":[{"name":"args"}]},"updateException":{"parameters":[{"name":"args"}]},"removeException":{"parameters":[{"name":"args"}]},"clearExceptions":{"parameters":[]},"search":{"parameters":[{"name":"args"}]},"remove":{"parameters":[]},"checkPassword":{"parameters":[{"name":"password"}]},"checkPasswordHistory":{"parameters":[{"name":"password"}]},"runDBSQL":{"parameters":[{"name":"args"}]},"removeUIRefresh":{"parameters":[{"name":"args"}]},"createUIRefresh":{"parameters":[{"name":"args"}]},"systemLog":{"parameters":[{"name":"args"}]},"checkLogIn":{"parameters":[{"name":"args"}]},"logIn":{"parameters":[{"name":"args"}]},"removeUser":{"parameters":[]},"whois":{"parameters":[{"name":"auth_token"}]},"auth":{"parameters":[{"name":"args"}]},"commit":{"parameters":[]},"purge":{"parameters":[{"name":"args"}]},"checkRequirements":{"parameters":[{"name":"password"}]},"checkHistory":{"parameters":[{"name":"password"},{"name":"limt"}]},"grantAccess":{"parameters":[{"name":"args"}]},"removeAccess":{"parameters":[{"name":"args"}]},"notify":{"parameters":[{"name":"args"}]},"sharableList":{"parameters":[]},"slackAccounts":{"parameters":[]},"sendSupportRequest":{"parameters":[{"name":"args"}]},"downloadActiveUsers":{"parameters":[{"name":"args"}]},"message":{"parameters":[]},"beginTransaction":{"parameters":[]},"commitTransaction":{"parameters":[]},"rollbackTransaction":{"parameters":[]},"restrictCustomer":{"parameters":[]},"permissionRequired":{"parameters":[{"name":"args"}]}}}}],"meta":{"data_type":"array"},"self":"https:\/\/connect.minitab.com\/api\/3\/User?apikey=5555888817ab43&action=search&args=[{%22full_name%22:%22Steve
	 Joe%22}]"} 
  

特定のエンドポイントGUIDの検索

このトピックでは、APIバージョン3の検索リクエストを使って、フィルター配列を設定することで目的のエンドポイントのGUIDを受け取るプロセスを概説します。また、特定のエンドポイントでフィルタリング可能な属性を決定する方法も説明しています。

どのエンドポイントを対象に検索すべきかを決定します

Minitab Connect 内の各オブジェクトには対応するエンドポイントがあり、フィルター配列を使って探索できます。特定のIDを特定する最初のステップは、API検索リクエストでどのエンドポイントを使用するべきかを決定することです。エンドポイントの詳細および現在のすべてのエンドポイントの一覧は The Minitab Connect APIでご覧いただけます。必要なエンドポイントが特定されたら、次のステップは検索可能な属性のリストを要求することです。

(本記事では「ユーザー」エンドポイントを使用します。)

APIバージョン3のリクエストを実行し、応答が受け取った

APIリクエストに必要な情報がすべて揃っている場合、そのリクエストを実行できます。成功したバージョン3のAPIリクエストは、JSONオブジェクトの形でデータを返します。リクエストにエンドポイントIDが含まれていなかったため、JSON応答はすべてNULLデータが含まれます。しかし、重要なのはデータではありません。この例では、データの前の属性の名前が求められています。これらがエンドポイント属性です。以下はAPIリクエストの例の結果です:

{  
   "data":{  
      "type":"User",
      "attributes":{  
         "user_id":null,
         "user_guid":null,
         "full_name":null,
         "email":null,
         "phone":null,
         "user_type_id":null,
         "cust_id":null,
         "adobe_key":null,
         "login":null,
         "theme":null,
         "last_active":null,
         "is_active":null,
         "exceptions":null,
         "notes":null,
         "two_factor":null,
         "auth_token":null,
         "expires":null,
         "password_history":null,
         "access_type":null,
         "notification_preference":"noti",
         "primary_id":"user_id",
         "primary_guid":"user_guid"
      },
      "meta":{  }
   },
   "meta":{  },
   "self":"https:\/\/connect.minitab.com\/api\/3\/User?apikey=411412489453456345645"

検索に使える属性は、JSONレスポンスオブジェクトの「-> 「data」 -> 「attributes」の中に見つけることができます。この例では、ユーザーエンドポイントを用いると、属性は以下の通りです:user_id、user_guid、full_name、メール、電話、user_type_id、cust_id、adobe_key、ログイン、last_active、is_active、例外、メモ、two_factor、auth_token、期限切れ、password_history、access_type、notification_preference、primary_id、primary_guid。これらの属性のいずれかまたはすべてがフィルター配列で使用され、特定のエンドポイントIDに絞り込むことができます。

検索アクションとフィルター配列の作成

これで、検索アクションを作成するために必要なすべての情報、特に目的のエンドポイントIDを表すすべての属性と値を含むフィルター配列を取得しました。このアクション &action=searchは、検索パラメータを決定するフィルター配列をシステムが受け入れるように設定します。この動作の前にアンパサンド(&)が付いていることに注意してください。最初の変数を除くすべての変数にはアンパサンドが付加されることを覚えておいてください。

この時点でフィルター配列を作成できます。利用可能な情報に応じて、フィルター配列を構築する際に異なる属性を使用します。次の情報が分かっていると仮定しましょう。

  • ユーザー名: バリー・ジョー
  • ユーザーはアクティブです
検索を容易にするために複数の条件付けも用意されています。以下は比較に使える条件文の一覧です:
  • EQ(等しい)
  • Ne(等しくない)
  • BW(で始まる)
  • EW(終わり)
  • CN(含まれている)
  • BN(始末しない)
  • エン(終わりは以下で終わらない)
  • NC(含まれていません)
  • ([コンマ区切りリスト]にて)
  • Ni([カンマ区切りリスト]には含まれていません)
  • nu(ヌル)
  • nn(NULLではない)
  • LT(それ以下)
  • le(以下以下)
  • GT(より大きい)
  • GE(大きいまたはそれに等しい)

この情報とユーザーエンドポイントの属性リストを踏まえ、full_name、cust_id、is_activeの属性が必要だと判断します。フィルター配列は以下の通りです:

&args=[{"full_name":["eq","Barry Joe"],"is_active":["eq","1"]}]

APIバージョン3の完全な検索リクエストは以下の通りです:

https://connect.minitab.com/api/3/User?apikey=411412489453456345645&action=search&args=[{"full_name":["eq","Barry Joe"],"is_active":["eq","1"]}]

このリクエストを実行すると、単一の結果を受け取ります:

{  
   "data":{  
      "type":"User",
      "attributes":{  
         "user_id":17,
         "user_guid":"75647362",
         "full_name":"Barry Joe",
         "email":"barry.smith@tmmdata.com",
         "phone":"111-555-1312",
         "user_type_id":20,
         "cust_id":"52342321",
         "adobe_key":null,
         "login":null,
         "theme":"3c",
         "last_active":"2017.10.31 09:53:01",
         "is_active":1,
         "exceptions":null,
         "notes":null,
         "two_factor":null,
         "auth_token":null,
         "expires":null,
         "password_history":null,
         "access_type":50,
         "notification_preference":"noti",
         "primary_id":"user_id",
         "primary_guid":"user_guid"
      },
      "meta":{  }
   },
   "meta":{  },
   "self":"https:\/\/connect.minitab.com\/api\/3\/User?apikey=411412489453456345645"

エンドポイントIDは17です。将来的にこのユーザーに影響を与えるAPIバージョン3のリクエストには、このIDが含まれることになります。

1 例のAPIリクエストにはデモンストレーション目的で無効なAPIキーが含まれており、そのまま使用するとエラーが発生します。これはセキュリティ上の理由です。有効なAPIキーが代わりに使われ、有効なAPI応答が生成されました。
2 提供されるAPIキーはデモンストレーション目的のみです。 有効なAPIキーを提供しなければならず、APIリクエストはエラーを引き起こします。