メインコンテンツまでスキップ

会員データ

KREISEL API を利用して、データベースに登録されている会員データを検索、取得する方法について解説します。

メールアドレスで会員を検索する

重複キー項目として設定されているメールアドレスを元に会員データを検索し、会員 ID を取得します。

API 情報

POST /api/v1/lookup_member_id

この API を利用するには、検索対象のデータベースで、検索に利用する項目(この場合はメールアドレス)に「重複キー」が設定されている必要があります。

注意点
  • 重複キーが複数設定されているデータベースでは、API リクエスト時にすべての重複キー項目を指定する必要があります。
  • メールアドレス項目が重複キーでない場合は、後述する getMemberInfosByOneshotCondition API を利用して検索します。

パラメータ

キーデータ型必須説明
member_table_idIntegerデータベースID。
member_infoObject検索条件となる会員情報。キーに項目名(e_XX)、値に検索値を指定します。

レスポンス

キーデータ型説明
member_idInteger検索に合致した会員のID。存在しない場合は 0 が返ります。

サンプルコード

データベース ID 1 のメールアドレス項目(項目 ID 6)に登録されている「foo@example.com」という会員を検索します。

<?php

$apiKey = 'YOUR_API_TOKEN';
$environmentId = '<環境ID>';
$url = "https://krs.bz/{$environmentId}/api/v1/lookup_member_id";

$data = [
'member_table_id' => 1,
'member_info' => [
'e_6' => 'foo@example.com',
],
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
$result = json_decode($response, true);
echo '会員ID : ', $result['member_id'], PHP_EOL;
} else {
// 例外発生時
echo 'Error: ', $response, PHP_EOL;
}

実行結果

  • 会員が存在する場合

    会員ID : 1
  • 会員が存在しない場合

    会員ID : 0
  • メールアドレス項目が重複キーでない場合

    Error: {"error_code":"KR_API_F0303","error_desc":"All Unique Key Elements Not Specified."}

複雑な条件で会員を検索する

getMemberInfosByOneshotCondition API を利用すると、複数の項目や複雑な条件を組み合わせて会員データを検索できます。 例えば、「特定の複数選択項目にチェックを入れている会員」を抽出することが可能です。

API 情報

POST /api/v1/get_member_infos_by_oneshot_condition

この API は一度の呼び出しで最大 50 件の会員データを返します。51 件目以降のデータを取得するには、offset パラメータの値を 50, 100 と増やして再度 API を呼び出す必要があります。

パラメータ

キーデータ型必須説明
member_table_idIntegerデータベースID。
condition_infoObject検索条件を指定するオブジェクト。詳細は後述します。
offsetInteger検索結果の取得開始位置。0 を指定すると1件目から取得します。
sort_keyInteger結果の並び替えの基準となる項目ID。会員IDでソートする場合は 0 を指定します。
orderBooleantrue で昇順、false で降順にソートします。

condition_info の構造

condition_infogroupingconditions の 2 つのキーを持つオブジェクトです。

キーデータ型説明
groupingBooleanconditionsで指定した各項目間の条件をどのように結合するかを指定します。trueでAND(かつ)、falseでOR(または)となります。
conditionsObject各項目に対する個別の検索条件を格納するオブジェクト。

conditions オブジェクトには、キーとして項目名(e_XX)、値として [条件のとりかた, 付加情報] という形式の配列を指定します。

複数選択項目の「条件のとりかた」

複数選択項目を検索条件として利用する場合、以下の「条件のとりかた」を指定できます。

条件説明
2完全に一致指定した選択肢と完全に一致する場合。
5含む指定した選択肢をすべて含む場合。
13どれかを含む指定した選択肢のいずれかを含む場合。
15選択した個数選択している選択肢の個数が指定範囲内の場合。
...他にも多数の条件があります。詳細はAPI仕様書をご参照ください。

付加情報の例

  • 選択肢IDで検索 (options): "e_XX" => [13, ["options" => [1, 3]]]
    • 意味: 項目 XX で、選択肢 ID 1 または 3 のいずれかを選択している。
    • 条件のとりかた: 13 (どれかを含む)
  • 選択数で検索 (min_value, max_value): "e_XX" => [15, ["min_value" => 3, "max_value" => 5]]
    • 意味: 項目 XX で、選択している項目が 3 個以上 5 個以下である。
    • 条件のとりかた: 15 (選択した個数)

サンプルコード

データベース ID 1 の中で、項目 ID 10(複数選択項目)の選択肢 ID 12 の両方にチェックを入れている会員を検索し、会員 ID の昇順で結果を表示します。

<?php

$apiKey = 'YOUR_API_TOKEN';
$environmentId = '<環境ID>';
$url = "https://krs.bz/i/v1/get_member_infos_by_oneshot_condition";

$conditionInfo = [
'grouping' => true,
'conditions' => [
// 項目ID 10 で、選択肢ID 1と2を両方とも選択している
'e_10' => [5, ['options' => [1, 2]]],
],
];

$data = [
'member_table_id' => 1,
'condition_info' => $conditionInfo,
'offset' => 0,
'sort_key' => 0, // 会員IDでソート
'order' => true, // 昇順
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
$result = json_decode($response, true);
if (!empty($result['member_infos'])) {
foreach ($result['member_infos'] as $member) {
// e_6 はメールアドレス項目
printf(
"会員ID : %s\t%s%s",
$member['id'],
$member['e_6'],
PHP_EOL
);
}
} else {
echo '該当会員は存在しませんでした', PHP_EOL;
}
} else {
echo 'Error: ', $response, PHP_EOL;
}

実行結果

  • 該当する会員が存在した場合

    会員ID : 1  foo@example.com
    会員ID : 15 bar@example.com
    ...
  • 該当する会員が存在しない場合

    該当会員は存在しませんでした

会員IDで会員データを取得する

会員 ID が分かっている場合、getMemberInfo API を使って特定の会員データを直接取得できます。

API 情報

POST /api/v1/get_member_info

パラメータ

キーデータ型必須説明
member_table_idIntegerデータベースID。
member_idInteger取得したい会員のID。

レスポンス

キーデータ型説明
member_infoObject会員情報のオブジェクト。

サンプルコード

データベース ID 1 に登録されている会員 ID 10 の会員データを取得し、メールアドレス(項目 ID 6)を表示します。

<?php

$apiKey = 'YOUR_API_TOKEN';
$environmentId = '<環境ID>';
$url = "https://krs.bz/{$environmentId}/api/v1/get_member_info";

$data = [
'member_table_id' => 1,
'member_id' => 10,
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
$result = json_decode($response, true);
$memberInfo = $result['member_info'];
printf(
"会員ID : %s\t%s%s",
$memberInfo['id'],
$memberInfo['e_6'], // e_6 はメールアドレス項目
PHP_EOL
);
} else {
echo 'Error: ', $response, PHP_EOL;
}

実行結果

  • 該当する会員が存在した場合

    会員ID : 10  foo@example.com
  • 該当する会員が存在しない場合

    Error: {"error_code":"KR_API_F0005","error_desc":"Invalid Object ID."}

保存済みの検索条件で検索する

KREISEL の管理画面で予め作成・保存した「抽出条件」を使って、会員データを検索することができます。毎回同じ条件で検索する場合に便利です。

API 情報

POST /api/v1/get_member_infos_by_condition

抽出条件は、KREISEL 管理画面の[会員データ]>[抽出条件管理]から作成できます。作成した抽出条件には一意の「抽出条件 ID」が割り当てられます。

ヒント

抽出条件は addCondition API を使ってプログラムから作成することも可能です。

パラメータ

キーデータ型必須説明
member_table_idIntegerデータベースID。
condition_idIntegerKREISEL管理画面で作成した抽出条件のID。
offsetInteger検索結果の取得開始位置。
sort_keyInteger結果の並び替えの基準となる項目ID。
orderBooleantrue で昇順、false で降順にソートします。

サンプルコード

データベース ID 1 に対し、抽出条件 ID 2 を使って会員を検索します。

<?php

$apiKey = 'YOUR_API_TOKEN';
$environmentId = '<環境ID>';
$url = "https://krs.bz/{$environmentId}/api/v1/get_member_infos_by_condition";

$data = [
'member_table_id' => 1,
'condition_id' => 2,
'offset' => 0,
'sort_key' => 0, // 会員IDでソート
'order' => true, // 昇順
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
$result = json_decode($response, true);
if (!empty($result['member_infos'])) {
foreach ($result['member_infos'] as $member) {
// e_6 はメールアドレス項目
printf(
"会員ID : %s\t%s%s",
$member['id'],
$member['e_6'],
PHP_EOL
);
}
} else {
echo '該当会員は存在しませんでした', PHP_EOL;
}
} else {
echo 'Error: ', $response, PHP_EOL;
}

実行結果

  • 該当する会員が存在した場合

    会員ID : 1  foo@example.com
    会員ID : 5 bar@example.com
    ...
  • 該当する会員が存在しない場合

    該当会員は存在しませんでした