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 help you to Create Access Levels in your BioStar 2 via using New local API.
This article includes a ‘Create Access Levels’ part of a sample application made for those who might need to use the BioStar 2 New Local API. It is a Visual C# console application.
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.
*Before we start
Before we enter Access Levels, you must know about Access Groups. Access Group is a higher concept than the Access Level. Access Group is consisted of User Groups & Access Levels.
Part 1. API Call & Parameters
- How to Create for Access Levels
Method | API | What it does | Parameters |
POST | /api/access_levels | Create Access Levels in BioStar 2 | *Check below |
[POST] /api/access_levels
[Parameters]
Name | Type | *M/O | Explanation | Parameter Type |
Name | String | M | Access Group Name |
|
Description | String | O | Description |
|
Access_level_items.schedule_id.id | String | M | Schedule ID | Example: 2 |
Access_level_items.schedule_id.name | String | M | Schedule Name | Example: AS |
Access_level_items.$$hashKey | String | O | No Required | Example: object: 2861 |
Access_level_items.doors.id | Integer | M | Door ID |
|
Access_level_items.doors.name | String | M | Door Name |
|
* M – Mandatory, O – Optional
Part 2. Request Body & Response Model
[Example Value/Parameters Model]
{ "AccessLevel": { "name": "as", "description": "string", "access_level_items": [ { "schedule_id": { "id": "1", "name": "Always" },
"doors": [ { "id": 8, "name": "door33" } ] } ] } } |
*Access Level Creation requires schedule & door
[Response Model]
{ "AccessLevel": { "id": "3", "name": "lvl_2" }, "DeviceResponse": { "rows": [ { "id": "541530960", "code": "64230" } ], "result": "false" }, "Response": { "code": "1003", "link": "https://support.supremainc.com/en/support/home", "message": "Success" }, "httpResponseStatus": 200 } |
[Response: Fail]
{ "Response": { "code": "10", "link": "https://support.supremainc.com/en/support/home", "message": "Login required." } } |
[Response: Successful]
{ "AccessLevel": { "id": "21", "name": "AccessLevelAPI" }, "DeviceResponse": { "rows": [ { "id": "541531089", "code": "0" } ], "result": "true" }, "Response": { "code": "0", "link": "https://support.supremainc.com/en/support/home", "message": "Success" } } |
Part 3. Console Create Access Levels Example
[Create Access Levels Method Source Code]
static async void CreateAccessLevels() { Console.WriteLine("*****CreateAccessLevels Task Started*****"); 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/access_levels";
JavaScriptSerializer serializer = new JavaScriptSerializer(); Console.WriteLine("Enter Access Level NAME: "); string name = Console.ReadLine(); Console.WriteLine("Enter Access Level DESCRIPTION: "); string description = Console.ReadLine(); SearchSchedules(); Console.WriteLine("Choose a SCHEDULE ID: "); string schedule = Console.ReadLine(); ListDoors(); Console.WriteLine("Choose a DOOR ID: "); string door = Console.ReadLine(); string payload = "{\"AccessLevel\": {\"name\": \"" + name + "\",\"description\": \"" + description + "\",\"access_level_items\": [{\"schedule_id\": { \"id\": \"" + schedule + "\"}, \"doors\": [{\"id\": " + door + "}]}]}}"; 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 Access Level Successful."); string httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); Console.WriteLine(httpResponseBody); } else { Console.WriteLine("Create Access Level Failed."); Console.WriteLine(httpResponse.ToString()); } } |
[After Create Access Level Successfully]
*Access Level Creation requires schedule & door
Part 4. Create Access Levels 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]
*Access Level Creation requires schedule & door
[Response Example: body]