データベース操作
KREISEL のデータベースを API 経由で操作する方法について説明します。
データベースの一覧と会員数を取得する
アカウントがアクセス可能なデータベースの一覧と、それぞれの会員数を取得します。
get_member_tables
API仕様
項目 | 内容 |
---|---|
エンドポイント | /api/v1/get_member_tables |
HTTPメソッド | POST |
リクエストボディ | なし(空のJSONオブジェクト {} を送信します) |
必要権限 | なし |
レスポンス
成功すると、データベース情報の配列が返されます。
{
"member_tables": [
{
"id": 1,
"title": "データベース名称1",
"nums": 50
},
{
"id": 2,
"title": "データベース名称2",
"nums": 350
}
]
}
備考
- 配列は KREISEL の管理画面と同じ順番でソートされています。
- ログインしているアカウントがアクセス権を持たないデータベースは、結果に含まれません。
サンプルコード (PHP)
<?php
$apiUrl = 'https://krs.bz/<環境ID>/api/v1/get_member_tables';
$apiToken = 'YOUR_API_TOKEN'; // あなたのAPIトークンに置き換えてください
$headers = [
'Authorization: Bearer ' . $apiToken,
'Content-Type: application/json',
];
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{}'); // リクエストボディは空
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$result = json_decode($response, true);
if (isset($result['member_tables'])) {
foreach ($result['member_tables'] as $db) {
echo "ID: {$db['id']}, 名称: {$db['title']}, 会員数: {$db['nums']}", PHP_EOL;
}
}
} else {
echo "APIリクエストに失敗しました。 HTTPステータスコード: ", $httpCode, PHP_EOL;
echo $response;
}
実行結果
ID: 1, 名称: データベース名称1, 会員数: 50
ID: 2, 名称: データベース名称2, 会員数: 350
データベースの項目一覧を取得する
特定のデータベースに存在する項目の一覧と、その詳細情報を取得します。
get_member_table_elements
API仕様
項目 | 内容 |
---|---|
エンドポイント | /api/v1/get_member_table_elements |
HTTPメソッド | POST |
必要権限 | 全てのアクセス権 または 操作のみ |
リクエスト
{
"member_table_id": 2
}
キー | 型 | 必須 | 説明 |
---|---|---|---|
member_table_id | Integer | 〇 | 情報を取得したいデータベースのID。 |
レスポンス
成功すると、データベース項目情報の配列が返されます。
{
"member_table_elements": [
{
"id": 4,
"name": "メールアドレス",
"type": "email",
"required": false,
"unique": false,
"system": false
},
{
"id": 5,
"name": "パスワード",
"type": "password",
"required": true,
"unique": false,
"system": false
},
{
"id": 1,
"name": "登録日時",
"type": "timestamp",
"required": false,
"unique": false,
"system": true
}
]
}
レスポンスのキー詳細
キー | データ型 | 説明 |
---|---|---|
id | Integer | データベース項目ID。各項目にユニークな数値が割り振られています。 |
name | String | 項目名称。KREISELの管理画面から設定できます。 |
type | String | 項目のタイプ。詳細は後述の「項目のタイプ一覧」を参照してください。 |
required | Boolean | 必須項目かどうかを表します。 |
unique | Boolean | 重複キーとして設定されているかどうかを表します。 |
system | Boolean | システム項目(登録日時、更新日時など自動で定義される項目)かどうかを表します。 |
サンプルコード (PHP)
<?php
$apiUrl = 'https://krs.bz/<環境ID>/api/v1/get_member_table_elements';
$apiToken = 'YOUR_API_TOKEN';
$databaseId = 2; // 情報を取得したいデータベースID
$headers = [
'Authorization: Bearer ' . $apiToken,
'Content-Type: application/json',
];
$data = json_encode(['member_table_id' => $databaseId]);
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$result = json_decode($response, true);
if (isset($result['member_table_elements'])) {
foreach ($result['member_table_elements'] as $element) {
echo "項目ID: {$element['id']}\t項目名: {$element['name']}\tタイプ: {$element['type']}", PHP_EOL;
}
}
} else {
echo "APIリクエストに失敗しました。 HTTPステータスコード: ", $httpCode, PHP_EOL;
$error = json_decode($response, true);
echo "エラーコード: {$error['error_code']}, 詳細: {$error['error_desc']}", PHP_EOL;
}
項目のタイプ一覧
get_member_table_elements
で返されるtype
キーの値と、対応する項目タイプは以下の通りです。
type キーの値 | 項目タイプ |
---|---|
text | テキスト |
textarea | テキストエリア |
integer | 整数 |
email | メールアドレス |
url | URL |
select | 単一選択 |
select_multiple | 複数選択 |
date | 日付 |
prefecture | 都道府県 |
zip | 郵便番号 |
telephone | 電話番号 |
sex | 性別 |
marriage | 未既婚 |
yesno | はい/いいえ |
checkbox | 選択 |
password | パスワード(平文) |
encrypted_text | テキスト(暗号化) |
hashed_password | パスワード(ハッシュ) |
autogen | 自動採番 |
timestamp | タイムスタンプ(システム日時) |
auth | パスワード(認証用) |
備考
timestamp
は「登録日時」「更新日時」「一括処理日時」「アップロード日時」などのシステム項目に該当します。
選択項目の選択肢一覧を取得する
単一選択項目や複数選択項目などの、選択肢の一覧を取得します。
get_member_table_element_config
API仕様
項目 | 内容 |
---|---|
エンドポイント | /api/v1/get_member_table_element_config |
HTTPメソッド | POST |
必要権限 | 全てのアクセス権 または 操作のみ |
リクエスト
{
"element_id": 270
}
キー | 型 | 必須 | 説明 |
---|---|---|---|
element_id | Integer | 〇 | 選択肢を取得したいデータベース項目のID。 |
レスポンス
成功すると、項目の詳細設定情報が返されます。選択肢は option.options
の中に連想配列として格納されています。
{
"option": {
"options": {
"1": "選択肢_1",
"2": "選択肢_2",
"3": "選択肢_3",
"4": "選択肢_4",
"5": "選択肢_5"
}
}
}
備考
options
は、キーが選択肢 ID、値が選択肢のラベルとなっています。- 選択肢を持たない項目(テキスト項目など)に対してこの API を呼び出した場合、レスポンスの
option
オブジェクトにoptions
キーは含まれません。
サンプルコード (PHP)
<?php
$apiUrl = 'https://krs.bz/<環境ID>/api/v1/get_member_table_element_config';
$apiToken = 'YOUR_API_TOKEN';
$elementId = 270; // 選択肢を取得したい項目ID
$headers = [
'Authorization: Bearer ' . $apiToken,
'Content-Type: application/json',
];
$data = json_encode(['element_id' => $elementId]);
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$result = json_decode($response, true);
if (isset($result['option']['options'])) {
foreach ($result['option']['options'] as $id => $label) {
echo "選択肢ID: {$id}\t選択肢名: {$label}", PHP_EOL;
}
} else {
echo "指定した項目には選択肢データがありません。", PHP_EOL;
}
} else {
echo "APIリクエストに失敗しました。 HTTPステータスコード: ", $httpCode, PHP_EOL;
$error = json_decode($response, true);
echo "エラーコード: {$error['error_code']}, 詳細: {$error['error_desc']}", PHP_EOL;
}
実行結果例
選択肢ID: 1 選択肢名: 選択肢_1
選択肢ID: 2 選択肢名: 選択肢_2
選択肢ID: 3 選択肢名: 選択肢_3
選択肢ID: 4 選択肢名: 選択肢_4
選択肢ID: 5 選択肢名: 選択肢_5