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 


 

  1. 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] 

텍스트이(가) 표시된 사진

자동 생성된 설명