会員データ
KREISEL API を利用して、データベースに登録されている会員データを検索、取得する方法について解説します。
メールアドレスで会員を検索する
重複キー項目として設定されているメールアドレスを元に会員データを検索し、会員 ID を取得します。
POST /api/v1/lookup_member_id
この API を利用するには、検索対象のデータベースで、検索に利用する項目(この場合はメールアドレス)に「重複キー」が設定されている必要があります。
- 重複キーが複数設定されているデータベースでは、API リクエスト時にすべての重複キー項目を指定する必要があります。
- メールアドレス項目が重複キーでない場合は、後述する
getMemberInfosByOneshotCondition
API を利用して検索します。
パラメータ
キー | データ型 | 必須 | 説明 |
---|---|---|---|
member_table_id | Integer | ○ | データベースID。 |
member_info | Object | ○ | 検索条件となる会員情報。キーに項目名(e_XX )、値に検索値を指定します。 |
レスポンス
キー | データ型 | 説明 |
---|---|---|
member_id | Integer | 検索に合致した会員の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 を利用すると、複数の項目や複雑な条件を組み合わせて会員データを検索できます。
例えば、「特定の複数選択項目にチェックを入れている会員」を抽出することが可能です。
POST /api/v1/get_member_infos_by_oneshot_condition
この API は一度の呼び出しで最大 50 件の会員データを返します。51 件目以降のデータを取得するには、offset
パラメータの値を 50
, 100
と増やして再度 API を呼び出す必要があります。
パラメータ
キー | データ型 | 必須 | 説明 |
---|---|---|---|
member_table_id | Integer | ○ | データベースID。 |
condition_info | Object | ○ | 検索条件を指定するオブジェクト。詳細は後述します。 |
offset | Integer | ○ | 検索結果の取得開始位置。0 を指定すると1件目から取得します。 |
sort_key | Integer | ○ | 結果の並び替えの基準となる項目ID。会員IDでソートする場合は 0 を指定します。 |
order | Boolean | ○ | true で昇順、false で降順にソートします。 |
condition_info
の構造
condition_info
は grouping
と conditions
の 2 つのキーを持つオブジェクトです。
キー | データ型 | 説明 |
---|---|---|
grouping | Boolean | conditions で指定した各項目間の条件をどのように結合するかを指定します。true でAND(かつ)、false でOR(または)となります。 |
conditions | Object | 各項目に対する個別の検索条件を格納するオブジェクト。 |
conditions
オブジェクトには、キーとして項目名(e_XX
)、値として [条件のとりかた, 付加情報]
という形式の配列を指定します。
複数選択項目の「条件のとりかた」
複数選択項目を検索条件として利用する場合、以下の「条件のとりかた」を指定できます。
値 | 条件 | 説明 |
---|---|---|
2 | 完全に一致 | 指定した選択肢と完全に一致する場合。 |
5 | 含む | 指定した選択肢をすべて含む場合。 |
13 | どれかを含む | 指定した選択肢のいずれかを含む場合。 |
15 | 選択した個数 | 選択している選択肢の個数が指定範囲内の場合。 |
他 | ... | 他にも多数の条件があります。詳細はAPI仕様書をご参照ください。 |
付加情報の例
- 選択肢IDで検索 (
options
):"e_XX" => [13, ["options" => [1, 3]]]
- 意味: 項目 XX で、選択肢 ID
1
または3
のいずれかを選択している。 - 条件のとりかた:
13
(どれかを含む)
- 意味: 項目 XX で、選択肢 ID
- 選択数で検索 (
min_value
,max_value
):"e_XX" => [15, ["min_value" => 3, "max_value" => 5]]
- 意味: 項目 XX で、選択している項目が 3 個以上 5 個以下である。
- 条件のとりかた:
15
(選択した個数)
サンプルコード
データベース ID 1
の中で、項目 ID 10
(複数選択項目)の選択肢 ID 1
と 2
の両方にチェックを入れている会員を検索し、会員 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 を使って特定の会員データを直接取得できます。
POST /api/v1/get_member_info
パラメータ
キー | データ型 | 必須 | 説明 |
---|---|---|---|
member_table_id | Integer | ○ | データベースID。 |
member_id | Integer | ○ | 取得したい会員のID。 |
レスポンス
キー | データ型 | 説明 |
---|---|---|
member_info | Object | 会員情報のオブジェクト。 |
サンプルコード
データベース 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 の管理画面で予め作成・保存した「抽出条件」を使って、会員データを検索することができます。毎回同じ条件で検索する場合に便利です。
POST /api/v1/get_member_infos_by_condition
抽出条件は、KREISEL 管理画面の[会員データ]>[抽出条件管理]から作成できます。作成した抽出条件には一意の「抽出条件 ID」が割り当てられます。
抽出条件は addCondition
API を使ってプログラムから作成することも可能です。
パラメータ
キー | データ型 | 必須 | 説明 |
---|---|---|---|
member_table_id | Integer | ○ | データベースID。 |
condition_id | Integer | ○ | KREISEL管理画面で作成した抽出条件のID。 |
offset | Integer | ○ | 検索結果の取得開始位置。 |
sort_key | Integer | ○ | 結果の並び替えの基準となる項目ID。 |
order | Boolean | ○ | true で昇順、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
... -
該当する会員が存在しない場合
該当会員は存在しませんでした