Introduction
If you’d like to use BioStar 2 New Local API as a RESTful API for your own customization or other purposes, you can simply reference this article. This article will cover the most basic usage of the BioStar 2 New Local API by C# console application.
This is just a sample application made for those who might need to use the BioStar 2 New Local API. It is a Visual C# console application.
Features
This article will cover the functions below:
- Login
- Search Users
- Create Users
- Create Users with Access Group
- Retrieve Log Data
- Retrieve Log Data with order by
Through this article, you can learn how to call an API function to create users to your BioStar 2 server. There are quite several parameters, but you can create users just by having values for the mandatory fields. If you’d like to add other optional fields to your user, you can simply insert the values in an appropriate way. Mandatory values might seem different from the swagger, but it works.
Make sure you take a good look at the example code of the C# program built for API calls. You can simply copy & paste the source code to use the same function in your own integration.
You can also see how to call the API functions via Postman, which is a program used for RESTful API calls.
Part 1. API Call & Parameters
[POST]: /users
[Parameters]
Group | Name | Sub-group | Type | *M/O | Explanation | Value |
User | name |
| string | M | User Name |
|
|
| string | O | |||
| Photo |
| string | O | User Photo |
|
| Phone |
| string | O | Phone |
|
| User_id |
| string | M | User ID |
|
| User_group_id | id | Integer | M | User Group ID |
|
| Disabled |
| Boolean | M | User Status | Ex) false |
| Start_datetime |
| string | M | Start Datetime | 2001-01-01T00:00:00.00Z |
| Expiry_datetime |
| string | M | Expiry Datetime | 2030-12-31T23:59:00.00Z |
| Permission | Id | string | O | Permission 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 | Description |
|
|
| Operator – name | string | O | User Name |
|
|
| Operator[] – owner_id | string | O | Permission 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 | User ID |
|
| Access_groups | Name | string | O | Access Group Name | Already Existed |
|
| Id | Integer | O | Access Group ID | Already Existed |
| Password |
| string | O | Password |
|
| Pin |
| string | O | PIN |
|
| Login_id |
| string | O | Login ID |
|
| User_ip |
| string | O | User IP |
|
| Fingerprint_templates[] | Template0 | string | O | Fingerprint binary data | Encoded Base64 String |
|
| Template1 | string | O | Fingerprint binary data | Encoded Base64 String |
|
| Finger_mask | Boolean | O | Finger Mask |
|
|
| isNew | boolean | O | New Fingerprint |
|
| Credentials | Faces[] – raw_image | string | O | Face Image Data |
|
|
| Faces[] – templates – template | string | O | Face Credential Data – Face Binary Data |
|
|
| Faces[] – Flag | string | O | Face Flag |
|
|
| Faces[] – useProfile | Boolean | O | Face data use profile |
|
|
| Faces[] – Index | Integer | O | Face Index |
|
| Cards[] | Card_type – id | string | O | Card Type 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 Name |
|
|
| Card_type – type | string | O | Card Type | (1:CSN, 2:SECURE, 3:ACCESS, 10:CSN_WIEGAND, 4:CSN_MOBILE, 5:WIEGAND_MOBILE, 6:QR/Barcode, 7:BioStar 2 QR) |
|
| Card_type – mode | string | O | Card Mode | (C:CSN, S:SECURE, A:ACCESS, M:CSN_MOBILE) |
|
| Card_id | string | O | Card ID |
|
|
| Display_card-id | string | O | Display Card ID |
|
|
| Id | string | O | ID | *Cards ID in BioStar 2(usually made in order of enrollment) |
|
| cardId | string | O | Wiegand Card Id | (Use Wiegand) |
|
| Wiegand_format_id – id | string | O | Wiegand Format Id |
|
|
| Wiegand_format__name | string | O | Wiegand Format Name | (Use Wiegand) |
* M – Mandatory, O - Optional
Part 2. Request Body & Response Model
[Input Example with minimum values]
{ "User": { "name": "API2", "user_id": "108", "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", "login_id": "api23", "password": "PassWord@" } } |
[Response: Fail]
{ "Response": { "code": "202", "link": "https://support.supremainc.com/en/support/home", "message": "User who has same id already exists" } } |
[Response: Successful]
{ "UserCollection": { "total": "1", "rows": [ { "user_id": "108", "name": " API2" } ] }, "Response": { "code": "0", "link": "https://support.supremainc.com/en/support/home", "message": "Success" } } |
Part 3. Console Create User Example
[Create Users Method Source Code]
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 + "\"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()); } } |
[After Creating User Successfully]
Part 4. Create User via Postman
[Request Example: Headers]
*You must use the ‘be-session-id’ value from the response header of the Login API call to authenticate API use for other API calls.
[Request Example]
[Response Example: body]