イントロ
独自のカスタマイズやその他の目的でRESTfulAPIとしてBioStar2 New Local APIを使用する場合は、この記事を参照してください。この記事では、C#コンソールアプリケーションによるBioStar 2 New Local APIの基本的な使用法について説明します。
機能
この記事では、以下の機能について説明します。
- ログイン
- ユーザー検索
- ユーザー追加
- アクセスグループにユーザーを追加
- ログデータの取得
- 順序でログデータの取得
*アクセスグループの作成に関する記事
http://kb.supremainc.com/knowledge/doku.php?id=ja:how_to_make_access_groups
この記事では、API呼び出しを介してユーザーを作成するときに、ユーザーをアクセスグループに追加する方法を確認します。
API呼び出し用に作成されたC#プログラムのサンプルコードをご覧ください。ソースコードをコピーして貼り付けて同じ機能を使用できます。
また、RESTfulAPI呼び出しに使用するプログラムであるPostmanを介してAPI関数を呼び出す方法も確認します。
Part 1. API呼び出しとパラメーター
[POST]: /users
[パラメーター]
グループ | 名称 | サブグループ | タイプ | *M/O | 詳細 | バリュー |
User | name | string | M | ユーザー名称 | ||
string | O | メールアドレス | [email protected].kr | |||
Photo | string | O | ユーザー画像 | |||
Phone | string | O | 電話番号 | |||
User_id | string | M | ユーザーID | |||
User_group_id | id | Integer | M | ユーザーグループID | ||
Disabled | Boolean | M | ユーザー状態 | Ex) false | ||
Start_datetime | string | M | 有効期間_開始日時 | 2001-01-01T00:00:00.00Z | ||
Expiry_datetime | string | M | 有効期限_終了日時 | 2030-12-31T23:59:00.00Z | ||
Permission | id | string | O | 捜査権限ID | Permission ID(Get_/api/permissions) 1(Administrator) 2(User Operator) 3(Monitoring Operator) ..(CustomId) 253(Video) 254(TA) 255(User) 100000(Visitor) | |
Name | string | O | Test | |||
Description | string | O | 説明 | |||
Operator - name | string | O | ユーザー名称 | |||
Operator[] - owner_id | string | O | 捜査権限ID | Permission ID(Get_/api/permissions) 1(Administrator) 2(User Operator) 3(Monitoring Operator) ..(CustomId) 253(Video)(Get_/api/permissions) 1(Administrator) 2(User Operator) 3(Monitoring Operator) ..(CustomId) 253(Video) 254(TA) 255(User) 100000(Visitor) 254(TA) 255(User) 100000(Visitor) | ||
Operator[] - user_id | string | O | ユーザーID | |||
Access_groups | Name | string | O | アクセスグループ名称 | 既に存在 | |
Id | Integer | O | アクセスグループID | 既に存在 | ||
Password | string | O | パスワード | |||
Pin | string | O | PIN | |||
Login_id | string | O | ログインID | |||
User_ip | string | O | ユーザーIP | |||
Fingerprint_templates[] | string | O | 指紋バイナリデータ | エンコードされたBase64文字列 | ||
string | O | 指紋バイナリデータ | エンコードされたBase64文字列 | |||
Finger_mask | Boolean | O | フィンガーマスク | |||
isNew | Boolean | O | 新しい指紋 | |||
Credentials | Faces[] - raw_image | string | O | 顔イメージデータ | ||
Faces[] - templates - template | string | O | 顔認証データ -顔バイナリデータ | |||
Faces[] - Flag | string | O | 顔フラッグ | |||
Faces[] - userProfile | Boolean | O | 顔データプロフィール画像使用 | |||
Faces[] - Index | Integer | O | 顔インデックス | |||
Cards[] | Card_type - id | string | O | カードタイプID | (0:CSN, 1:WIEGAND, 2:SECURE, 3:ACCESS, 4:CSN_MOBILE, 5:WIEGAND_MOBILE, 6:QR/Barcode, 7:BioStar 2 QR) | |
Card_type - name | string | O | カードタイプ名称 | |||
Card_type - type | string | O | カードタイプ | (0:CSN, 1:WIEGAND, 2:SECURE, 3:ACCESS, 4:CSN_MOBILE, 5:WIEGAND_MOBILE, 6:QR/Barcode, 7:BioStar 2 QR) | ||
Card_type - mode | string | O | カードモード | (C:CSN, S:SECURE, A:ACCESS, M:CSN_MOBILE) | ||
Card_id | string | O | カードID | |||
Display_card-id | string | O | カードID表示 | |||
Id | string | O | ID | *BioStar 2のカードID(通常は登録順に作成されます) | ||
cardId | string | O | Wiegandカード Id | (Wiegand使用) | ||
Wiegand_format_id - id | string | O | WiegandフォーマットId | |||
Wiegand_format_name | string | O | Wiegandフォーマット名称 | (Wiegand使用) |
M – 必須, O - オプション
Part 2. リクエストボディとレスポンスモデル
[必須値入力例]
{ "User": { "name": "AGTEST", "user_id": "99999", "user_group_id": { "id": 1, "name": "All Users" }, "disabled": "false", "start_datetime": "2001-01-01T00:00:00.00Z", "expiry_datetime": "2030-12-31T23:59:00.00Z", "access_groups": [{ "name": "TTTEST", "id": 15 } ], "login_id": "api2", "password": "Peter3820@" } } |
[レスポンス: エラー]
{ "Response": { "code": "202", "link": "https://support.supremainc.com/en/support/home", "message": "User who has same id already exists" } } |
[レスポンス: 成功]
{ "UserCollection": { "total": "1", "rows": [ { "user_id": "99999", "name": " AGTEST " } ] }, "Response": { "code": "0", "link": "https://support.supremainc.com/en/support/home", "message": "Success" } } |
Part 3. コンソールユーザー追加の例
[ユーザー追加ソースコード ]
static async void CreateUserTask() { 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("https://127.0.0.1"), new Cookie("bs-session-id", sessionID));
string resourceAddress = "https://127.0.0.1/api/users";
JavaScriptSerializer serializer = new JavaScriptSerializer(); Console.WriteLine("Enter USER NAME: "); string UserName = Console.ReadLine(); Console.WriteLine("Enter USER ID: "); string UserID = Console.ReadLine(); Console.WriteLine("Enter USER LOGIN ID: "); string User_login_id = Console.ReadLine(); Console.WriteLine("Enter USER LOGIN PASSWORD: "); string User_login_pw = Console.ReadLine();
string payload2 = "{ \"User\": "; payload2 = payload2 + "{\"name\": \"" + UserName + "\", "; payload2 = payload2 + "\"user_id\": \"" + UserID + "\","; payload2 = payload2 + "\"user_group_id\": { \"id\": 1, \"name\": \"All Users\" },\"disabled\": \"false\",\"start_datetime\": \"2001-01-01T00:00:00.00Z\", \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\", "; payload2 = payload2 + "\"access_groups\"": [{\"name\": \"TTTEST\",\"id\": 15 }],"; payload2 = payload2 + "\"login_id\": \""+ User_login_id +"\", "; payload2 = payload2 + "\"password\": \"" + User_login_pw + "\"}}"; Console.WriteLine(payload2); StringContent sc = new StringContent(payload2, Encoding.UTF8, "application/json");
HttpResponseMessage httpResponse = httpClient.PostAsync(resourceAddress, sc).Result;
if (httpResponse.IsSuccessStatusCode == true) { Console.WriteLine("User has been created"); string httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); Console.WriteLine(httpResponseBody); } else { Console.WriteLine("User Creation Failed"); Console.WriteLine(httpResponse.ToString()); } } |
[ユーザー追加成功]
Part 4. Postman経由でユーザー追加
[リクエスト例: ヘッダー]
*他のAPI呼び出しでのAPIの使用を認証するには、LoginAPI呼び出しのレスポンスヘッダーの「be-session-id」値を入力してください。
[リクエスト例 ]
[レスポンス例: body]