1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Yellowfin REST API : クライアント組織の管理

Posted at

はじめに

REST API を介して Yellowfin を管理する方法は、以前にもいくつかご紹介差し上げています。
今回は、クライアント組織の管理にかかわる内容を紹介します。クライアント組織の情報参照、新規作成、組織へのユーザー登録などに関する処理です。なお、サンプルコードはすべて php で記述しています。

アクセストークンの取得

REST API 経由でリソースの参照、作成、追加などの処理を行う場合、まずはアクセストークンの取得が必須となります。
アクセストークンを取得するまでのコードは、第 1 回 『Yellowfin REST API エクスポートできるコンテンツの確認』 を参照ください。

組織情報の参照

アクセストークンを取得したら、続いて以下のコードを順に記述します。

・クライアント組織の管理に関わる処理は、/api/orgs/ API を使用します。

getOrgs.php
$url3 = 'http://localhost:8080/api/orgs/';

・API に引き渡すヘッダー情報の中に、アクセストークンを含めます。

getOrgs.php
$header3 = array(
    'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$accessToken,
    'Accept:application/vnd.yellowfin.api-v2+json'
);

・curl で処理を実行します。先のコードで作成したヘッダー情報などを伴って、GET で情報を要求します。

getOrgs.php
$ch3 = curl_init();
curl_setopt($ch3, CURLOPT_URL, $url3);
curl_setopt($ch3, CURLOPT_HTTPHEADER, $header3);
curl_setopt($ch3, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch3, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch3, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); 
$result3 = curl_exec($ch3);
$result3_json = json_decode($result3, true);
curl_close($ch3);

・result3_json に、組織に関する情報が JSON の配列の形で格納されます。具体的な形式は、開発者サイト Response samples に説明があります。見やすくするために、result3_json からクライアント組織の内部 ID、クライアント参照 ID 、名前、タイムゾーン、カスタムスタイルパスに関する情報だけを抜き出し、カンマ区切りの CSV 形式に変更しています。

getOrgs.php
$i=0;
foreach($result3_json["items"] as $value) {
    $orgInfo=$result3_json["items"][$i]["ipOrg"].','.$result3_json["items"][$i]["clientRefId"].','. 
             $result3_json["items"][$i]["name"].','.$result3_json["items"][$i]["defaultTimezone"].','.
             $result3_json["items"][$i]["customStylePath"]."\n";
    echo($orgInfo);
    $i++;
}

・getOrgs.php を実行すると、以下のような結果が返ってきます。

実行結果
1,,Default,ASIA/TOKYO,
13151,001,A,ASIA/TOKYO,001
13204,002,B,ASIA/TOKYO,002

この中で、13151、13204 が ipOrg と呼ばれる内部 ID で、クライアント組織を一位に認識する情報です。この情報を、組織にユーザーを登録する処理の中で使用します。

クライアント組織の新規作成

アクセストークンを取得したら、続いて以下のコードを順に記述します。

・情報参照の処理と同様に、/api/orgs/ API を使用します。

createOrg.php
$url3 = 'http://localhost:8080/api/orgs/';

・API に引き渡すヘッダー情報の中に、アクセストークンを含めます。

createOrg.php
$header3 = array(
    'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$accessToken,
    'Accept:application/vnd.yellowfin.api-v2+json',
    'Content-Type:application/json'
);

・作成するクライアント組織の情報を JSON 形式の外部ファイルから読み込みます。

createOrg.php
ob_start();
include("org.json");
$orgData = ob_get_clean();

・下記は、クライアント参照 ID が 003 の、C 社という名前の組織を追加する JSON の例です。JSON ファイルに含める各項目の詳細は、開発者サイトの REQUEST BODY SCHEME の箇所をご確認ください。

org.json
{
    "clientRefId": "003",
    "name": "C社",
    "defaultTimezone": "ASIA/TOKYO",
    "customStylePath": "003"
}

・curl で処理を実行します。先のコードで作成したヘッダー、ボディー情報などを伴って、POST で要求します。

createOrg.php$ch3 = curl_init();
curl_setopt($ch3, CURLOPT_HTTPHEADER, $header3);
curl_setopt($ch3, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch3, CURLOPT_POSTFIELDS, $orgData);
curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch3, CURLOPT_URL, $url3);
$result3 =curl_exec($ch3);
curl_close($ch3);

クライアント組織へのユーザー登録

クライアント組織にユーザーを所属させるためには、クライアント組織の ID (ipOrg) と、ユーザーの ID (userId) に関する情報が必要となります。ipOrg の確認方法は先述の通りです。 userId の確認方法は 『Yellowfin 情報参照プログラム PHP + REST API でロール / ユーザー / グループなどの情報を取得』の記事をご確認ください。

アクセストークンを取得したら、続いて以下のコードを順に記述します。

・URL の一部に、ipOrg を含めます。

regUserToOrg
$iporg='13204';
$url3 = 'http://localhost:8080/api/orgs/'.$iporg.'/user-access/';

・ヘッダー情報として、取得したアクセストークンを受け渡します。

regUserToOrg
$header3 = array(
    'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$accessToken,
    'Accept:application/vnd.yellowfin.api-v2+json',
    'Content-Type:application/json'
);

・登録するユーザーの情報を JSON ファイルから読み込みます。

regUserToOrg
ob_start();
include("userOrg.json");
$orgData = ob_get_clean();

・JSON ファイルには、登録するユーザーの userId 情報のみを含みます。

userOrg.json
{
    "userId": 13202
}

・curl で処理を実行します。先のコードで作成したヘッダー、ボディー情報などを伴って、POST で要求します。

regUserToOrg
$ch3 = curl_init();
curl_setopt($ch3, CURLOPT_HTTPHEADER, $header3);
curl_setopt($ch3, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch3, CURLOPT_POSTFIELDS, $orgData);
curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch3, CURLOPT_URL, $url3);
$result3 =curl_exec($ch3);
curl_close($ch3);

最後に

開発者サイトには、上記で説明した以外にも、様々な API が紹介されています。いずれも、本記事内のサンプルコードを修正することでほぼ対応が可能です。
いろいろとお試しください。

では皆様、良いデータ分析を! Cheers!! Santé!

おまけ コード全容

getOrgs.php
//変数の宣言
$adminId = 'admin@yellowfin.com.au';
$adminPassword = 'test';
$time = ceil(microtime(true)*1000);
$url = 'http://localhost:8080/api/refresh-tokens';
$url2 = 'http://localhost:8080/api/access-tokens';
$refreshToken = "";
$accessToken = "";

//リフレッシュトークン:HEADERデータ作成
$header = array(
    'Authorization:YELLOWFIN ts='.$time.', nonce=123',
    'Accept:application/vnd.yellowfin.api-v2+json',
    'Content-Type:application/json;charset=UTF-8'
);

//リフレッシュトークン:BODYデータ作成
$body = array(
    'userName'=>$adminId,
    'password'=>$adminPassword
);
$body_json = json_encode($body, JSON_PRETTY_PRINT);

//リフレッシュトークン:Yellowfinにトークンを要求
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$json_result = json_decode($result);
$refreshToken = $json_result->securityToken;
curl_close($ch);

//アクセストークン:HEADERデータ作成
$header2 = array(
    'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$refreshToken,
    'Accept:application/vnd.yellowfin.api-v2+json',
    'Content-Type:application/json'
);

//アクセストークン:Yellowfinにトークンを要求
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_HTTPHEADER, $header2);
curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch2, CURLOPT_POSTFIELDS, '');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL, $url2);
curl_close($ch);
$result2 = curl_exec($ch2);
$json_result2 = json_decode($result2);
$accessToken=$json_result2->securityToken;

//変数の宣言
$url3 = 'http://localhost:8080/api/orgs/';

//クライアント組織参照:HEADERデータ作成
$header3 = array(
	'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$accessToken,
	'Accept:application/vnd.yellowfin.api-v2+json'
);

//クライアント組織参照:処理
$ch3 = curl_init();
curl_setopt($ch3, CURLOPT_URL, $url3);
curl_setopt($ch3, CURLOPT_HTTPHEADER, $header3);
curl_setopt($ch3, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch3, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch3, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); 
$result3 = curl_exec($ch3);
$result3_json = json_decode($result3, true);
curl_close($ch3);

//クライアント組織:情報出力
$i=0;
foreach($result3_json["items"] as $value) {
    $orgInfo=$result3_json["items"][$i]["ipOrg"].','.$result3_json["items"][$i]["clientRefId"].','. 
             $result3_json["items"][$i]["name"].','.$result3_json["items"][$i]["defaultTimezone"].','.
             $result3_json["items"][$i]["customStylePath"]."\n";
    echo($orgInfo);
    $i++;
}
createOrg.php
//変数の宣言
$adminId = 'admin@yellowfin.com.au';
$adminPassword = 'test';
$time = ceil(microtime(true)*1000);
$url = 'http://localhost:8080/api/refresh-tokens';
$url2 = 'http://localhost:8080/api/access-tokens';
$refreshToken = "";
$accessToken = "";

//リフレッシュトークン:HEADERデータ作成
$header = array(
    'Authorization:YELLOWFIN ts='.$time.', nonce=123',
    'Accept:application/vnd.yellowfin.api-v2+json',
    'Content-Type:application/json;charset=UTF-8'
);

//リフレッシュトークン:BODYデータ作成
$body = array(
    'userName'=>$adminId,
    'password'=>$adminPassword
);
$body_json = json_encode($body, JSON_PRETTY_PRINT);

//リフレッシュトークン:Yellowfinにトークンを要求
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$json_result = json_decode($result);
$refreshToken = $json_result->securityToken;
curl_close($ch);

//アクセストークン:HEADERデータ作成
$header2 = array(
    'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$refreshToken,
    'Accept:application/vnd.yellowfin.api-v2+json',
    'Content-Type:application/json'
);

//アクセストークン:Yellowfinにトークンを要求
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_HTTPHEADER, $header2);
curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch2, CURLOPT_POSTFIELDS, '');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL, $url2);
curl_close($ch);
$result2 = curl_exec($ch2);
$json_result2 = json_decode($result2);
$accessToken=$json_result2->securityToken;

//変数の宣言
$url3 = 'http://localhost:8080/api/orgs/';

//クライアント組織作成:HEADERデータ作成
$header3 = array(
	'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$accessToken,
	'Accept:application/vnd.yellowfin.api-v2+json',
	'Content-Type:application/json'
);

//クライアント組織作成:データ読込
ob_start();
include("org.json");
$orgData = ob_get_clean();

//クライアント組織作成:作成
$ch3 = curl_init();
curl_setopt($ch3, CURLOPT_HTTPHEADER, $header3);
curl_setopt($ch3, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch3, CURLOPT_POSTFIELDS, $orgData);
curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch3, CURLOPT_URL, $url3);
$result3 =curl_exec($ch3);
curl_close($ch3);
regUserToOrg
//変数の宣言
$adminId = 'admin@yellowfin.com.au';
$adminPassword = 'test';
$time = ceil(microtime(true)*1000);
$url = 'http://localhost:8080/api/refresh-tokens';
$url2 = 'http://localhost:8080/api/access-tokens';
$refreshToken = "";
$accessToken = "";

//リフレッシュトークン:HEADERデータ作成
$header = array(
    'Authorization:YELLOWFIN ts='.$time.', nonce=123',
    'Accept:application/vnd.yellowfin.api-v2+json',
    'Content-Type:application/json;charset=UTF-8'
);

//リフレッシュトークン:BODYデータ作成
$body = array(
    'userName'=>$adminId,
    'password'=>$adminPassword
);
$body_json = json_encode($body, JSON_PRETTY_PRINT);

//リフレッシュトークン:Yellowfinにトークンを要求
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$json_result = json_decode($result);
$refreshToken = $json_result->securityToken;
curl_close($ch);

//アクセストークン:HEADERデータ作成
$header2 = array(
    'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$refreshToken,
    'Accept:application/vnd.yellowfin.api-v2+json',
    'Content-Type:application/json'
);

//アクセストークン:Yellowfinにトークンを要求
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_HTTPHEADER, $header2);
curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch2, CURLOPT_POSTFIELDS, '');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL, $url2);
curl_close($ch);
$result2 = curl_exec($ch2);
$json_result2 = json_decode($result2);
$accessToken=$json_result2->securityToken;

//変数の宣言
$iporg='13204';
$url3 = 'http://localhost:8080/api/orgs/'.$iporg.'/user-access/';

//ユーザー登録:HEADERデータ作成
$header3 = array(
	'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$accessToken,
	'Accept:application/vnd.yellowfin.api-v2+json',
	'Content-Type:application/json'
);

//ユーザー登録:データ読込
ob_start();
include("userOrg.json");
$orgData = ob_get_clean();

//ユーザー登録:登録
$ch3 = curl_init();
curl_setopt($ch3, CURLOPT_HTTPHEADER, $header3);
curl_setopt($ch3, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch3, CURLOPT_POSTFIELDS, $orgData);
curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch3, CURLOPT_URL, $url3);
$result3 =curl_exec($ch3);
curl_close($ch3);
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?