独自のカスタマイズやその他の目的でRESTfulAPIとしてBioStar2 New Local APIを使用する場合は、この記事を参照してください。この記事では、BioStar 2 New Local APIを使用するユーザー向けに作成されたC#サンプルアプリケーションの「ドア作成」を確認いただけます。
API呼び出し用に作成されたC#プログラムのサンプルコードをご覧ください。ソースコードをコピーして貼り付けて同じ機能を使用できます。
また、RESTfulAPI呼び出しに使用するプログラムであるPostmanを介してAPI関数を呼び出す方法も確認します。
Part 1. API呼び出しとパラメーター
- ドアを作成する方法
Method | API | 目的 | パラメーター |
POST
| /api/doors | ドア作成 | *以下のテーブルをご確認ください。 |
[POST]: /api/doors
[パラメーター]
名称 | タイプ | *M/O | 説明 | バリュー |
Exit_button_input_id.device_id.id | Int | O | 退室端末ID |
|
Exit_button_input_id.device_id.name | String | O | 退室端末名称 | Base64 |
Exit_button_input_id.input_index | Int | O | 退室入力index |
|
Exit_button_input_id.type | String | O | 退室入力タイプ |
|
Exit_button_input_id.supervised | String | O | 退室スーパーバイズド |
|
Sensor_input_id.device_id.id | Int | O | センサー端末ID |
|
Sensor_input_id.device_id.name | String | O | センサー端末名称 | Base64 |
Sensor_input_id..input_index | Int | O | センサー入力index |
|
Sensor_input_id.type | String | O | センサー入力タイプ |
|
Sensor_input_id.supervised | String | O | センサースーパーバイズド |
|
Antitailsensor_input_id.device_id | array | O | 共ずれ防止センサー入力端末ID |
|
Antitailsensor_input_id.type | String | O | 共ずれ防止センサー入力タイプ |
|
Open_duration | Int | O | オープン時間 |
|
Dual_authentication.device | String | O | 端末タイプ | 1- 入室端末 |
Dual_authentication.approval_type | String | O | 承認順番 | 1- 最後 |
Dual_authentication.timeout | Int | O | タイムアウト時間 | 例:15 |
Dual_authentication.schedule_id.id | String | O | スケジュールID | 例:1 |
Dual_authentication.approval_groups | String | O | 承認グループ |
|
Open_once | Boolean | O | ドアを閉じた時の施錠 | 例:false |
Unconditional_lock | Boolean | O | 自動ドア使用 | Default: false |
Door_group_id.id | Int | O | ドアグループID | Default: 0 |
Door_group_id.name | String | O | ドアグループ名称 | 例:すべてのドア |
Entry_device_id.id | Int | M | 入室端末ID |
|
Entry_device_id.name | String | M | 入室端末名称 | Base64 |
Entry_device_id.device_type_id | Int | M | 端末タイプID | BIOENTRY_PLUS : 1, BIOENTRY_W : 2, BIOLITE_NET : 3, XPASS : 4, XPASS_S2 : 5, ENTRY_MAX : 5, SECURE_IO_2 : 6, DOOR_MODULE_20 : 7, BIOSTATION_2 : 8, BIOSTATION_A2 : 9, FACESTATION_2 : 10, IO_DEVICE : 11, BIOSTATION_L2 : 12, BIOENTRY_W2 : 13, CORESTATION_40 : 14, OUTPUT_MODULE : 15, INPUT_MODULE : 16, BIOENTRY_P2 : 17, BIOLITE_N2 : 18, XPASS2 : 19, XPASS_S3 : 20, BIOENTRY_R2 : 21, XPASS_D2 : 22, DOOR_MODULE_21 : 23, XPASS_D2_KEYPAD : 24, FACELITE : 25, XPASS2_KEYPAD : 26, MAX = BS2_DEVICE_TYPE_XPASS2_KEYPAD, : 26, UNKNOWN : 255, |
Trigger_actions.input_event_id | String | O | コード | 例:22528 |
Trigger_actions.output_device_id.id | Int | O | 端末ID |
|
Trigger_actions.output_device_id.name | String | O | 端末名称 | Base64 |
Trigger_actions.output_device_id.device_type_id.id | Int | O | 端末タイプID | BIOENTRY_PLUS : 1, BIOENTRY_W : 2, BIOLITE_NET : 3, XPASS : 4, XPASS_S2 : 5, ENTRY_MAX : 5, SECURE_IO_2 : 6, DOOR_MODULE_20 : 7, BIOSTATION_2 : 8, BIOSTATION_A2 : 9, FACESTATION_2 : 10, IO_DEVICE : 11, BIOSTATION_L2 : 12, BIOENTRY_W2 : 13, CORESTATION_40 : 14, OUTPUT_MODULE : 15, INPUT_MODULE : 16, BIOENTRY_P2 : 17, BIOLITE_N2 : 18, XPASS2 : 19, XPASS_S3 : 20, BIOENTRY_R2 : 21, XPASS_D2 : 22, DOOR_MODULE_21 : 23, XPASS_D2_KEYPAD : 24, FACELITE : 25, XPASS2_KEYPAD : 26, MAX = BS2_DEVICE_TYPE_XPASS2_KEYPAD, : 26, UNKNOWN : 255, |
Trigger_actions.output_device_id.status | String | O | 状態 | 例:2 |
Trigger_actions.output_device_id.rs485.mode | String | O | RS485モード | 例:1 |
Trigger_actions.output_device_id.rs485.channels | array | O | Channels |
|
Trigger_actions.output_device_id.rs485.parent_rs485.info | String | O | 親RS485情報 |
|
Trigger_actions.output_device_id.device_group_id.id | Int | O | 端末グループID |
|
Trigger_actions.output_device_id.device_group_id.name | String | O | 端末グループ名称 |
|
Trigger_actions.output_device_id.version.firmware | String | O | FWバージョン | 例:1.1.0 |
Trigger_actions.output_device_id.version.product_name | String | O | 製品名 | 例:BLN2-OAB |
Trigger_actions.output_device_id.lan.ip | String | O | IP | 例:192.168.12.168 |
Trigger_actions.output_device_id.lan.connection_mode | String | O | 接続モード | 例:0 |
Trigger_actions.output_device_id.tna..mode | String | O | 勤怠モード | 例:3 |
Trigger_actions.output_device_id.tna..required | Boolean | O | 勤怠必須 | 例:false |
Trigger_actions.output_device_id.tna..fixed_code | String | O | 勤怠固定コード |
|
Trigger_actions.output_device_id.tna..tna_keys.enabled | Boolean | O | 勤怠キー使用 |
|
Trigger_actions.output_device_id.tna..tna_keys.label | String | O | 勤怠キーラベル |
|
Trigger_actions.output_device_id.tna..tna_keys.icon | String | O | 勤怠キーアイコン |
|
Trigger_actions.output_device_id.slave_devices | Array | O | スレーブ端末 |
|
Trigger_actions.output_device_id.packet_version | Int | O | パケットバージョン |
|
Trigger_actions.output_device_id.iconCls | String | O | アイコンクラス | 例:dvBioLiteN2 sync_error |
Trigger_actions.output_device_id.deviceData.id | Int | O | 端末ID | 例:635 |
Trigger_actions.output_device_id.deviceData.name | String | O | 端末名称 | Base64 |
Trigger_actions.output_device_id.deviceData.device_type_id.id | Int | O | 端末タイプID | BIOENTRY_PLUS : 1, BIOENTRY_W : 2, BIOLITE_NET : 3, XPASS : 4, XPASS_S2 : 5, ENTRY_MAX : 5, SECURE_IO_2 : 6, DOOR_MODULE_20 : 7, BIOSTATION_2 : 8, BIOSTATION_A2 : 9, FACESTATION_2 : 10, IO_DEVICE : 11, BIOSTATION_L2 : 12, BIOENTRY_W2 : 13, CORESTATION_40 : 14, OUTPUT_MODULE : 15, INPUT_MODULE : 16, BIOENTRY_P2 : 17, BIOLITE_N2 : 18, XPASS2 : 19, XPASS_S3 : 20, BIOENTRY_R2 : 21, XPASS_D2 : 22, DOOR_MODULE_21 : 23, XPASS_D2_KEYPAD : 24, FACELITE : 25, XPASS2_KEYPAD : 26, MAX = BS2_DEVICE_TYPE_XPASS2_KEYPAD, : 26, UNKNOWN : 255, |
Trigger_actions.output_device_id.deviceData.device_type_id.status | Int | O | 状態 |
|
Trigger_actions.output_device_id.deviceData.device_type_id.rs485.mode | String | O | RS485モード |
|
Trigger_actions.output_device_id.deviceData.device_type_id.rs485.channels | Array | O | Channels |
|
Trigger_actions.output_device_id.deviceData.device_type_id.rs485.parent_rs485_info | String | O | 親RS485情報 |
|
Trigger_actions.output_device_id.deviceData.device_type_id.device_group_id.id | Int | O | 端末グループID |
|
Trigger_actions.output_device_id.deviceData.device_type_iddevie_group_id.name | String | O | 端末グループ名 |
|
Trigger_actions.output_device_id.deviceData.device_type_id.version.firmware | String | O | FWバージョン | 例:1.1.0 |
Trigger_actions.output_device_id.deviceData.device_type_id.version.product_name | String | O | 製品名 | 例:BLN2-OAB |
Trigger_actions.output_device_id.deviceData.device_type_id.lan.ip | String | O | IP |
|
Trigger_actions.output_device_id.deviceData.device_type_idlan.connection_mode | String | O | 接続モード |
|
Trigger_actions.output_device_id.deviceData.device_type_id.tna.mode | String | O | 勤怠モード |
|
Trigger_actions.output_device_id.deviceData.device_type_id.tna.required | String | O | 勤怠必須 |
|
Trigger_actions.output_device_id.deviceData.device_type_id.tna.fixed_code | String | O | 勤怠固定コード |
|
Trigger_actions.output_device_id.deviceData.device_type_id.tna.tna_keys.enabled | Boolean | O | 勤怠キー使用 |
|
Trigger_actions.output_device_id.deviceData.device_type_id.tna.tna_keys.label | String | O | 勤怠ラベル |
|
Trigger_actions.output_device_id.deviceData.device_type_id.tna.tna_keys.icon | String | O | 勤怠アイコン |
|
Trigger_actions.output_device_id.deviceData.device_type_id.slave_devices | Array | O | スレーブ端末 |
|
Trigger_actions.output_device_id.deviceData.device_type_id.packet_version | Int | O | パケットバージョン |
|
Trigger_actions.output_device_id.deviceData.device_type_id.iconCls | String | O | アイコンクラス |
|
Trigger_actions.output_device_id.sound | Boolean | O | 音声 |
|
Trigger_actions.output_type | Int | O | 出力タイプ |
|
Trigger_actions.sound_index | Int | O | 音声Index |
|
Trigger_actions.stop_flag | Int | O | Stop Flag |
|
Trigger_actions.$$hashKey | String | O | No Required | 例:object:3207 |
Relay_output_id.device_id | Int | M | 端末ID |
|
Relay_output_id.relay_index | Int | M | リレー index |
|
Open_timeout | Int |
| 解錠タイムアウト |
|
Name | String | M | 名称 |
|
Door_anti_passback | Array | O | ドアアンチパスバック |
|
* M – 必須, O – オプション
Part 2. リクエストボディとレスポンスモデル
[値/パラメータモデルの例 ]
{ "Door": { "exit_button_input_id": { "device_id": { "id": 635, "name": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe..." }, "input_index": 0, "type": "0", "supervised": "" }, "sensor_input_id": { "device_id": { "id": 635, "name": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe..." }, "input_index": 0, "type": "0", "supervised": "" }, "antitailsensor_input_id": { "device_id": {}, "type": "0" }, "open_duration": 3, "dual_authentication": { "device": "1", "approval_type": "1", "timeout": 15, "schedule_id": { "id": "1" }, "approval_groups": [ null ] }, "open_once": "false", "unconditional_lock": "true", "door_group_id": { "id": 1, "name": "All Doors" }, "entry_device_id": { "id": 635, "name": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe...", "device_type_id": { "id": 18 } }, "trigger_actions": [ { "input_event_id": { "code": "22528" }, "output_device_id": { "id": 635, "name": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe...", "device_type_id": { "id": 18 }, "status": "2", "rs485": { "mode": "1", "channels": [ null ], "parent_rs485_info": "" }, "device_group_id": { "id": 1, "name": "All Devices" }, "version": { "firmware": "1.1.0", "product_name": "BLN2-OAB" }, "lan": { "ip": "192.168.12.165", "connection_mode": "0" }, "tna": { "mode": "3", "required": "false", "fixed_code": "1", "tna_keys": [ { "enabled": "false", "label": "", "icon": "0" } ] }, "slave_devices": [ null ], "packet_version": 2, "iconCls": "dvBioLiteN2 sync_error", "deviceData": { "id": 635, "name": "Base64: RDQQFJYAVUYvFXsEIzIQC1QYbodkHe...", "device_type_id": { "id": 18 }, "status": 2, "rs485": { "mode": "1", "channels": [ null ], "parent_rs485_info": "" }, "device_group_id": { "id": 1, "name": "All Devices" }, "version": { "firmware": "1.1.0", "product_name": "BLN2-OAB" }, "lan": { "ip": "192.168.12.165", "connection_mode": "0" }, "tna": { "mode": "3", "required": "false", "fixed_code": "1", "tna_keys": [ { "enabled": "false", "label": "", "icon": "0" } ] }, "slave_devices": [ null ], "packet_version": 2, "iconCls": "dvBioLiteN2 sync_error" }, "sound": true }, "output_type": 2, "sound_index": 4, "stop_flag": 1, "$$hashKey": "object:3207" } ], "relay_output_id": { "device_id": { "id": 635 }, "relay_index": 0 }, "open_timeout": 3, "name": "d22", "door_anti_passback": {} } } |
[レスポンスモデル]
{ "DoorCollection": { "total": "1", "rows": [ { "id": "3", "name": "d22" } ] }, "DeviceResponse": { "rows": [ { "id": "541530960", "seq": "37", "command": "0x500(BS2_CMD_SET_DOOR)", "code": "64230" } ], "result": "false" }, "Response": { "code": "0", "link": "https://support.supremainc.com/en/support/home", "message": "Success" }, "httpResponseStatus": 200 } |
[レスポンス: エラー]
{ "Response": { "code": "10", "link": "https://support.supremainc.com/en/support/home", "message": "Login required." } } |
[レスポンス: 成功]
{ "DoorCollection": { "total": "1", "rows": [ { "id": "34", "name": "Door3223" } ] }, "Response": { "code": "0", "link": "https://support.supremainc.com/en/support/home", "message": "Success" } } |
Part 3. ドア作成コンソール例
[ドア作成メソッドソースコード]
static async void CreateDoor() { Console.WriteLine("*****CreateDoor Task Started******"); if (sessionID == null) { Console.WriteLine("You must log in first!"); return; } CookieContainer cookieContainer = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler(); handler.CookieContainer = cookieContainer;
HttpClient httpClient = new HttpClient(handler);
HttpClient client = new HttpClient(handler); httpClient.DefaultRequestHeaders.Add("bs-session-id", sessionID); cookieContainer.Add(new Uri(BioStarIP), new Cookie("bs-session-id", sessionID)); string resourceAddress = BioStarIP + "/api/doors";
JavaScriptSerializer serializer = new JavaScriptSerializer(); Console.WriteLine("Enter Door Name: "); string name = Console.ReadLine(); ListDevices(); Console.WriteLine("Enter Relay Device ID: "); string RelayDeviceID = Console.ReadLine(); string payload = "{{\"Door\":{\"door_group_id\":{\"id\":1,\"name\":\"AllDoors\"},\"entry_device_id\":{},\"relay_output_id\":{\"device_id\":{\"id\":" + RelayDeviceID + "},\"relay_index\":1},\"open_timeout\":3,\"name\":\"" + name + "\",\"door_anti_passback\":{}}}}"; Console.WriteLine(payload); StringContent sc = new StringContent(payload, Encoding.UTF8, "application/json"); HttpResponseMessage httpResponse = httpClient.PostAsync(resourceAddress, sc).Result;
if (httpResponse.IsSuccessStatusCode == true) { Console.WriteLine("Create Door Successful."); string httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); Console.WriteLine(httpResponseBody); } else { Console.WriteLine("Create Door Failed."); Console.WriteLine(httpResponse.ToString()); } } |
[ドア作成成功]
*ドア名入力
*端末リスト表示
*device_idでデバイスを選択して、リレーデバイスとしてドアに追加
Part 4. Postmanでドア作成
[リクエスト例: ヘッダー]
*他のAPI呼び出しでのAPIの使用を認証するには、LoginAPI呼び出しの応答ヘッダーの「be-session-id」値を使用する必要があります。
[リクエスト例]
*リクエスト本文には必要なパラメータのみが記載されています
[レスポンス例: ボディ]