こちらが検索リクエストの例です。
上記の例では、エンドポイントがソースであり、APIリクエストでできることはユーザーデータオブジェクトを操作するために特別に設計されたアクションに限定されます。
上記の例では、アクションは「Search」です。検索は、特定のフィルターセットを満たすエンドポイントからデータを取得するために使われます。
{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を用いるソースインターフェースエンドポイントを通じて可能です。
成功したバージョン3のAPIリクエストは、JSONオブジェクトの形でデータを返します。この例では、シンプルな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リクエストであることを指定します。?apikey=4535464564474127781 2&action=search この操作により、検索パラメータを決定するフィルター配列を受け入れるようシステムが設定されます。
この設定変数はAPIキーからアンパサンド(&)で区切られています。最初の変数を除くすべての変数にはアンパサンドが付加されます。
&args=[{"full_name":"Steve Joe"}] フィルター配列はシステムにUserdataオブジェクトを検索し、「Steve Joe」と等しい属性full_nameを持つすべてのオブジェクトを返すよう指示します。APIリクエストから受信されるレスポンスは、属性「fname」と「Steve」の値を持ったすべてのユーザーデータオブジェクトを含む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}]"}
このトピックでは、APIバージョン3の検索リクエストを使って、フィルター配列を設定することで目的のエンドポイントのGUIDを受け取るプロセスを概説します。また、特定のエンドポイントでフィルタリング可能な属性を決定する方法も説明しています。
Minitab Connect 内の各オブジェクトには対応するエンドポイントがあり、フィルター配列を使って探索できます。特定のIDを特定する最初のステップは、API検索リクエストでどのエンドポイントを使用するべきかを決定することです。エンドポイントの詳細および現在のすべてのエンドポイントの一覧は The Minitab Connect APIでご覧いただけます。必要なエンドポイントが特定されたら、次のステップは検索可能な属性のリストを要求することです。
(本記事では「ユーザー」エンドポイントを使用します。)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は、検索パラメータを決定するフィルター配列をシステムが受け入れるように設定します。この動作の前にアンパサンド(&)が付いていることに注意してください。最初の変数を除くすべての変数にはアンパサンドが付加されることを覚えておいてください。
この時点でフィルター配列を作成できます。利用可能な情報に応じて、フィルター配列を構築する際に異なる属性を使用します。次の情報が分かっていると仮定しましょう。
この情報とユーザーエンドポイントの属性リストを踏まえ、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が含まれることになります。