{
  "info": {
    "_postman_id": "966edad1-4519-4ddb-9137-7e33ab728e56",
    "name": "BioStar X API",
    "description": "## Overview\n\nSuprema BioStar X API is a JSON-based API. All requests are made to endpoints beginning with [https://server_ip|domain_name[:port]/api](https://server_ip|domain_name:port/api)\n\nThe API can be used to perform almost any operation. Following are a few examples of what can be done with Suprema BioStar X API:\n\n- Manage User data\n    \n- Manage Access Group data\n    \n- Manage Doors data\n    \n- Assign an Access Group to one or multiple User\n    \n- Assign a User with one or multiple Access Group\n    \n- Manage Devices\n    \n- And many more...\n    \n\nAll requests must be secure (https).\n\n## General Information\n\nTo call the API, BioStar X is mainly using HTTP Methods `GET`, `POST`, `PUT`, and `DELETE`.\n\n- `GET` is used to retrieve data from the server at the specified resource. For example, if you want to retrieve the User data with /users endpoint, then by making a `GET` request to the endpoint should result with the list of all available users.\n    \n- `POST` request is used to send data to the server to create or update a resource. The data sent to the server is stored on the body of the HTTP request.\n    \n- `PUT` is similar to `POST` in that it creates or updates a resource. The difference between them is that when calling the same `PUT` requests multiple times it will have the same result. While calling a `POST` request repeatedly will create the same resource multiple times.\n    \n- `DELETE` is used to delete resources at the specified endpoint.\n    \n\nThere are four parameter location that’s being used on Suprema BioStar X API:\n\n- PATH parameter is located on the URL, usually on the end of an endpoint. For example in /items/{ItemID}, the PATH parameter is ItemID.\n    \n- BODY. An array of string values will be located on the BODY of the HTTP request. The request body needs to be in JSON format.\n    \n- QUERY. Similar to the PATH parameter, QUERY parameter is also located on the URL, the difference is QUERY parameter will be located after a question mark. Example: /items?id=###, the QUERY parameter is id.\n    \n- HEADER. Custom headers that are expected as part of the request.\n    \n\nPath templating refers to the usage of template expressions, delimited by curly braces ({}), to mark a section of a URL path as replaceable using path parameters. Example: [https://127.0.0.1:4433/api/some_api/{id](https://127.0.0.1:4433/api/some_api/%7Bid)}  \nAbove example shows that the required value will be placed on {id}\n\nFor `AUTHORIZATION` details please check `POST Login` documentation.\n\n## Import the Postman collection\n\nTo import the Postman collection online, follow these steps:\n\n1. Download the Postman collection file(<a href='../../specs/bsxapi-postman-collection.json' rel='noopener noreferrer' download>bsxapi-postman-collection.json</a>).\n\n2. Go to <a href='https://web.postman.co/home' target='_blank' rel='noopener noreferrer'>Postman</a> and sign in.\n\n3. Select your workspace from the workspace selector in the top left. Or create a workspace if you don't have one.\n\n4. Click **Import** in the sidebar.\n\n5. Select downloaded file, or drag the file into the import window.\n\n    <img src='https://assets.postman.com/postman-docs/v10/import-export-import-ui-v10-20.jpg' width='600px' />\n\n6. Click **Import** to complete the process.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_exporter_id": "18574376",
    "_collection_link": "https://go.postman.co/collection/18574376-966edad1-4519-4ddb-9137-7e33ab728e56?source=collection_link"
  },
  "item": [
    {
      "name": "Revision Notes",
      "item": [],
      "description": "## v1.0.2\n\n**2026-06-15**\n\n- Updated Run Backup\n    \n- Updated Setting > Active Directory > Synchronize\n    \n\n---\n\n## v1.0.0\n\n**2025-09-30**\n\n- Initial version",
      "auth": {
        "type": "noauth"
      },
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Authorization",
      "item": [
        {
          "name": "Login",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "//put response's bs-session-id value to collection variable bsid\r",
                  "pm.test(\"Status code is 200\", function () {\r",
                  "    pm.response.to.have.status(200);\r",
                  "});\r",
                  "\r",
                  "if(pm.response.to.have.status(200)) {\r",
                  "    let params = pm.response.headers.get('bs-session-id');\r",
                  "    pm.collectionVariables.set(\"bsid\", params);\r",
                  "}"
                ],
                "type": "text/javascript",
                "packages": {}
              }
            },
            {
              "listen": "prerequest",
              "script": {
                "packages": {},
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"login_id\": \"admin\",\r\n        \"password\": \"{{lPassword}}\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/login",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "login"
              ]
            },
            "description": "In order to use Suprema BioStar X API, you will need a Session ID which will be available after you’re logged in.\n\nTo log in, make a form encoded server side POST request as shown on example below.\n\n`POST /api/login`\n\n`Host: server_ip|domain_name[:port]`\n\n`{“User”: {“login_id”: “user_login_id_here”, “password”: “password_here”}}`\n\nThe parameters are:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| login_id | String | Y | Your login ID |\n| password | String | Y | Your password |\n\nWhen successful, you will receive back the following response:\n\n``` json\nStatus: 200 OK\nbs-session-id: c52127fea7f645149083d04d89ad68e5\nContent-Type: application/json;charset=UTF-8\n{\n  \"User\": {\n    \"user_id\": \"1\",\n    \"name\": \"Administrator\",\n    \"gender\": \"1\",\n    \"email\": \"admin111@gmail.com\",\n    \"birthday\": \"1977-10-08T04:00:00.00Z\",\n    \"photo_exists\": \"false\",\n    \"pin_exists\": \"false\",\n    \"login_id\": \"admin\",\n    \"password_exists\": \"true\",\n    \"updated_count\": \"15\",\n    \"last_modified\": \"946\",\n    \"idx_last_modified\": \"263\",\n    \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\n    \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\n    \"security_level\": \"0\",\n    \"display_duration\": \"20\",\n    \"display_count\": \"3\",\n    \"permission\": {\n      \"id\": \"1\",\n      \"name\": \"Administrator\",\n      \"description\": \"this is a permission for Administrator\",\n      \"filter\": {\n        \"UserGroup\": [\n          \"1\"\n        ],\n        \"DeviceGroup\": [\n          \"1\"\n        ],\n        \"DoorGroup\": [\n          \"1\"\n        ],\n        \"ElevatorGroup\": [\n          \"1\"\n        ],\n        \"ZoneType\": [\n          \"-1\"\n        ],\n        \"AccessGroup\": [\n          \"0\"\n        ],\n        \"GraphicMapGroup\": [\n          \"1\"\n        ]\n      },\n      \"module\": {\n        \"Dashboard\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"User\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"Device\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"Door\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"Elevator\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"Zone\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"AccessControl\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"Monitoring\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"TA\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"Setting\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"Video\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        },\n        \"Visitor\": {\n          \"read\": \"true\",\n          \"write\": \"true\"\n        }\n      },\n      \"device\": {\n        \"id\": \"939257394\"\n      },\n      \"user\": {\n        \"id\": \"33\"\n      }\n    },\n    \"inherited\": \"false\",\n    \"user_group_id\": {\n      \"id\": \"1\",\n      \"name\": \"All Users\"\n    },\n    \"disabled\": \"false\",\n    \"expired\": \"false\",\n    \"department\": \"department 12\",\n    \"user_title\": \"title\",\n    \"idx_user_id\": \"1001\",\n    \"idx_user_id_num\": \"1001\",\n    \"idx_name\": \"2001\",\n    \"idx_phone\": \"1001\",\n    \"idx_email\": \"5001\",\n    \"fingerprint_template_count\": \"0\",\n    \"face_count\": \"0\",\n    \"card_count\": \"0\",\n    \"access_groups\": [\n      {\n        \"id\": \"1\",\n        \"name\": \"Meeting Room 1 AG\"\n      },\n      {\n        \"id\": \"2\",\n        \"name\": \"Meeting Room 2 AG\"\n      },\n      {\n        \"id\": \"22\",\n        \"name\": \"Building Access\"\n      }\n    ],\n    \"user_custom_fields\": [\n      {\n        \"user_id\": {\n          \"user_id\": \"1\",\n          \"name\": \"Administrator\"\n        },\n        \"custom_field\": {\n          \"id\": \"1\",\n          \"name\": \"Test\",\n          \"type\": \"0\",\n          \"order\": \"1\"\n        }\n      },\n      {\n        \"user_id\": {\n          \"user_id\": \"1\",\n          \"name\": \"Administrator\"\n        },\n        \"custom_field\": {\n          \"id\": \"2\",\n          \"name\": \"33\",\n          \"type\": \"0\",\n          \"order\": \"2\"\n        }\n      }\n    ],\n    \"need_to_update_pw\": \"false\"\n  },\n  \"Response\": {\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"Success\"\n  }\n}\n\n```\n\nThere will be a key called bs-session-id, which is a consecutive strings of hex digits located on the header of the response:  \n`bs-session-id: 643f64efb7114485a2fd89de17ca13fb`\n\nThis value will be used as authorization of the APIs that will be called. To apply this value, put it on the header of the API that will be called with key name `bs-session-id`.\n\n#### Response Properties:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| user_id | Number / Alphanumeric | Unique identifier for the user. |\n| name | String | User's full name. |\n| gender | Character | (Deprecated) Previously indicated gender: N = Not set, M = Male, W = Female. No longer used in the user module. |\n| birthday | ISO Date | User’s date of birth in ISO format. |\n| photo | Base64 String | User’s profile picture in Base64 format. |\n| photo_exists | Boolean | Indicates whether the user has a profile picture (`true` = has a photo, `false` = no photo). |\n| pin | Base64 String | User’s encrypted PIN code. |\n| pin_exists | Boolean | Indicates whether the user has set a PIN (`true` = PIN set, `false` = no PIN). |\n| login_id | String | User’s login identifier. |\n| password_exists | Boolean | Indicates whether the user has set a password (`true` = password set, `false` = no password). |\n| updated_count | Number | Number of times the user’s data has been updated. |\n| last_modified | Number | Timestamp of the last data modification. |\n| idx_last_modified | Number | Internal tracking number for the last modification when personal data is encrypted. |\n| start_datetime | ISO Date | Date and time when the user’s access period started. |\n| expiry_datetime | ISO Date | Date and time when the user’s access will expire. |\n| security_level | Number | User’s security clearance level. |\n| display_duration | Boolean | Indicates whether the screen display period is enabled. |\n| display_count | Boolean | Indicates whether screen display count is enabled. |\n| permission | Object | Defines the user’s operator-level permissions. |\n| inherited | Boolean | Indicates whether the user inherits properties from a user group (`true` = inherits, `false` = does not inherit). |\n| user_group_id | Object | The user group to which the user belongs. |\n| disabled | Boolean | Indicates whether the user’s account is disabled (`true` = disabled, `false` = active). |\n| expired | Boolean | Indicates whether the user’s account has expired (`true` = expired, `false` = active). |\n| idx_user_id | Number | Internal tracking number for the user ID in decrypted memory. |\n| idx_user_id_num | Number | Internal tracking number for user ID when alphanumeric mode is activated in decrypted memory. |\n| idx_name | Number | Internal tracking number for the user’s name in decrypted memory. |\n| idx_phone | Number | Internal tracking number for the user’s phone number in decrypted memory. |\n| idx_email | Number | Internal tracking number for the user’s email address in decrypted memory. |\n| fingerprint_login | Boolean | Indicates whether the user can log in using a fingerprint. |\n| fingerprint_template_count | Number | Number of registered fingerprints for the user. |\n| face_count | Number | Number of registered facial recognition templates for the user. |\n| visual_face_count | Number | Number of registered visual facial recognition templates. |\n| card_count | Number | Number of assigned access cards for the user. |\n| qr_count | Number | Number of assigned QR code credentials. |\n| mobile_count | Number | Number of assigned mobile access cards. |\n| need_to_update_pw | Boolean | Indicates whether the user is required to update their password (true = password update required). |\n| version.dbBiostarVersion | String | Installed version of the BioStar X database. |\n| version.biostarVersion | String | Installed build number of the CGI server. |\n| isMatchVersion | Boolean | Indicates whether `dbBiostarVersion` and `biostarVersion` have the same prefix (`true` = versions match). Example: `3.0.0.30` and `3.0.0.42` would return `true`. |\n| notiPopupOpen | Boolean | The inverse of `isMatchVersion`. (`true` = versions do not match). |"
          },
          "response": [
            {
              "name": "Login Success",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"User\": {\r\n        \"login_id\": \"admin\",\r\n        \"password\": \"{{lPassword}}\"\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/login",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "login"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "bs-session-id",
                  "value": "435564a0e0d2443fa2d8f86d5bb40622"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "24631"
                },
                {
                  "key": "Date",
                  "value": "Tue, 21 Jan 2025 01:53:26 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"User\": {\n        \"user_id\": \"1\",\n        \"name\": \"Administrator\",\n        \"gender\": \"1\",\n        \"birthday\": \"1977-10-08T04:00:00.00Z\",\n        \"photo\": \"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCACgAJYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDQNowXyyMg9u38s0+NEThwAfvcnqa9A+KngPwD4M8Rf2R4M+J+neKbM2yP/aNjYz2wWQj5oykyqeCDgjIIIPBJUcm9tp4PLgHOcAj5q/OqWOTlb+v+CfYzwztcpRupbcgOf9odquwHgqGA3dDzUeLJRkXCrjg4+vpUbXVrG2VucYyOWHHr26V6FOs2ckqKNS3uQRuVcZHT+X+fer1pdIT5hzktg8df8/hWC2q2iPzKCB6d/wDPNSwa9boPlcnngZrqjJM55U9DqI7iMYcLkDknbmpobhcADjBOMnJHt+tc1Brrn5vMBU9B6e5qZNfG4+ZMDjv3I/KteUwcGdStx12rkY4C9jUsF+uAmMZzn0+tcyniSGP5mfg/dGeBz2zUyeJLSdA4I2+mRz3696LPoQ4s6cXasmyQHJPUHipIrzZ1kVSPRug/z2rmW1y1mBi8xWK/xY46/jT7aeW4Zdinp1Iq02jNwZ1cN5Gy5jnHOOo+lWxqCMoUT47uT1/+tXN2dleXMmxImAH8/wD6/wDhW7p3h13XZcY3cZGK2hJszdkW7cCYDMwxnOM/eHpVyGBCxIlIPfac9f8AP86S08Lyyn5ZwAOmfyrYsfCaj5nuHJK/Lge3+fzrVXZFynZ2MbAR/N6qB/n2/wD1Vk/GSzSx8IWmJGXzb4DHqAjc/Tn9RXrXjfwZ8KPBEFnd+E/iimuQ+Szahcz6S9hHbMMYGZSd2fmOcAAL1OcDyH9pjxj4PtfBFjqtv4hhuLS38y6uZLZvM2RBcbtqAkgfNzjsfQ1hjHH6nJrsbYXXExR5irBG5BzjuuaK5/wd8Q/DnjzTn1Xw3PLLDHM8XmTW7RklWKnhsHqCPw4or5Rxaep9ImraHxp4x8L/ABj/AGQvj9J+zP8AEL4gT61F/ZaajoWvJcTJLc27M+BMHkbDKUdOCfujnnj0PwF448e65rVl4d0G61DU7y9nS2sbCBWnluZWYKkaIMl2YkAKASSQBXBft1/s+fHz4E/H+6/aC+NvjSDxJZ+JWFlp/iS1hW3yY41CpPDGFSE7FGMAqSCc5PPC+FfiNrjXSzWlvdQSRFHhuEO3nOQVIOQQR/KvpMurKvhIyupO29up42YUpUcS0rpH2lp/jfxL4N1qTwr8QfC82mana7BcafrGnNBPGGRXXfHIoZcqysMjkEEZBFd5pvxQ0WeNWfQNNbp1tIz/ADFfFWs/G34meM/EE/ivxp4j1TWNUuSoudS1W/e4nl2qEXdJIxZsKqqMngKAOBVaf47+MdKicwxTyhD92NwenXoeD0r1qVaKgueKv1ttc8ycJuWkmfbmt/EjQjCdum6ajHp/okfT8q898V/EyOOQm1SFAOuyIL/LrXy5oH7Xvi/RvEen63ffD241eGxvYp5NM1CJzbXao4YwyiORWMbAbWCspwTgg80njX9pzUvGfiy81zTfg+/h22uZQ0WlaUZ3trYYAwhuJpZCCQWOXIyxxgYUVOom7coQjJK7ke7Xvxb1FHIS4YEnAxJx/nNaqaz8YLD4fx/FaTwVq48LzX/2KLxDJp8v2Jrjk+SJyNm/5W+XOflb0OPnCx+IOp37+WbOZGK7jG7LkD1xnIro1+I3xHbwk/gSLxHqi6DJei8k0VdRcWjXIXYJjFnZ5m35d2M44ziuSpWcWuW3/AOqMbrU9IvfjXrjA7LsA/7J6fzrndZ+KOrXsTrPrlwQwJwtwRkenBrg5ptWkB+THH94cVWlt9Wf78IPH9/oKynidDSFJ3Od1P4n/Ef9lv4k6V8bPhL4g1q5sjqEaaz4cu9duJbe+JY7UKOWJBJI4PBAwOx/XH4PeJvEfjT4ZaH4s8W+GJNE1HUdOhuL7SpVANpIyglOp6H3r8jfiFFqVp4RvNRlv0077Kn2iC+Vdxt5IyHRgB3DKK/SH/gnpfftUa78AbXxT+1h4mi1HWNXmW50yP7NDHLb2ZRdnmGLCuW+8OAQDg5PNVh5qrF2M8VBxsz6DsmXcFKkjPHHBFbOn2Qu3DCBCAOvfHr/AJ9awYWjDjO0sOR6V1nhWTGXwcbRznGa9CKbR571NAWem+HtHu/EOsl4bKxtnuLqRYmdkjRSzHaoJPGeACa8M8TftDeG/j/8Ntc0r4ZePJbfzCx0660/Q7pLmMhmVVIIaKUuxUKRKBuALBcFV+j5bBNY0i40prh4xNEyiRJHXaSOPuspPXpnnFfMUf7CfxD8C+OdZ8TT/EfwNPaawfLsl1jQ2tJ3gD+dJulgJLuCAG+Xy2VAXBOCtSjU0sRJpHiV9+x58bviz4gk0b4ufGLVr3w5oekQXN5FLrAt7ezQswD3KrI0UakAt5iqNwz8oNWfhw8lnd6z4X0vxrput6DpUqQaJPpMSCEwZkw4w7s4ZAjbnO7nGTjJof8ABTnx34++F1ovwM8DPruvaj4ltNIfVLazijtp9SeHzYEhttkpE658svGgcB3yqfMFXD/ZW8F/8K++H17oF78Ptb8O3serzC9tNfJW4lYcBmjaKMxuoGxh8wLIWBAO0eXmsHDCysu1/v2OvLmpY1L1/I9FtbPTNIt/s+m6fFbxk5CQoFX8hRQ7hznnHsMYor5Zq7Ppz1b9rzwD8J/HH7OviTw78VPBuueItBaKOXUdO8O/NdhY5FcTKvmJv8tlDlc5IXADHAr8dPhbIttrep+Dbe7mv7OwJksdSnzvkiLEKGQltjYwSu5tp4BOMn9uZtWf5kS4dCQV3xnBTI6j35z+Ffj78ZPh5Zfs6/tla78GvD/xDXxdaalEb+9vprQpdWt1IWkeOVl3B25yTx98ZC1tkUJ0G4t7lZq41aV7al23hTbtZSCB0o8D/Cnxx4q8USaJ8PtCu9Z1fU793sNN0/T5bmWVmQDYI4wWfp0HPNfUf/BNb9hG0/bG8calqnjDUXtfDPhsxfb1h4e7lcsUi3Z+RTtO4jnkY65H6zfBX4CL8JvCjeEvgv4F0bQ7KK9intTaRRB4pItxWUOYizPuwCzliw3A8Ngfc4XLK1amqr0i9j4rFZlRoVHSWskfhD4u+D/7V3wgl+wfEr4VX3huTyhJ5XiHwndWjeWSyhgJgCAWVgD0yD6VhGX4neUDCdGbHUm3cE/k9f0SeNvhZ8WPFulOmsaiLzUJo3LajdywsULEBVC+SVCLguFC4DEgqwOa8D+NP/BKr4bfGnwHqi6j8L9OtPGWoQEWvjzR75rf7HcrsZXmt4lWGYPsKMrR52udrq2GGtXLayV4NN/11FSzSi2lNM/EWw8JeILrx1P4y8SmzVpLFLcxWoONysTu5+tX7nxp8P8ATZntrvxnpcMiOVeOXUI1ZT6EFuPpXbfFP4beNfgx8SNd+EvxAs/s+raBqMlpdgK4SRlPyyxl1VmjddroxUbkdWxzXnH/AASk+GP7F/jf/gov8QvBX7Ztt4QudO1TT7iPwnF4xeJLU6srJKsTSTgRRF4hJtaR1V22xrukdVrxYUnWrOFSXK0etVrRo0VOKuixdfE34ZxBmb4h6JgfezqsX6/NVK6+Mfwstsib4jaEnAwX1SEZ/Nq+zv8AgqJ8Ff8AgmV+xlfv+zrq/wCxLoXhPxJrPgK41rwr8QrbwlY3luurQXLGDTpYpbUqUmMJjkfaxRbmHcqK5mi848T/ALP/AOyv+2D/AMEhfH37Zfwr/Yi+H/hLU9F8I6wNVlsdLmhNhqdiiO9xpznGYHjw4UlvKZjDvkaN2O6y2FTESoKTclq9Dk/tVRipcuj8z5M+If7Rngn4d+J/Cer6t4SbxTo8moR6hJbW2oLFb3qRPuWMyhHBXeFJ4wQuO9fsv8Ndci8WfD3RPFFrpcNnHqWl29yltazCVIFkjDBFdQAQAcZAA4r8cPgd8C7b4vfsNaY0d95F3DYb9PLShE8yN2c722sQMdgO4r9Lv+CU37RfxJ/ao+Bwn8b/AA9tNNh8Ow22n2ut2er28qag6RhW3QRtut3ACnaV24YYNGDpRi3TR0Y27gps+kdL0R7iNXKgnHftzVT4m/EXxB8H/D9zqmi/C3WfEtwLdXs7fS7V5jcyliPJAQHYe5d8KM8kDmu10LSlhby5yM56gZ79K66y0+WfSzZWOoG0lcENN5aszKRggbgdp564OMdK9mNC6PIlVsfLvjL9vn43eENe0PTtC/Yb1uK3u4ydYvPHfiay0C3jIiB8uCWSR/NlLNgR4DHHHJGZfhJ+0L/wUN1P4g3+seIv2a9M8NeG7W+gj1XQ9e8d2Vzc6er24y8c10Y90TOV+UhME48wgiuB/aq/4JMftPftW/F211Dxr+1ZPb+GIiv9n2i2DXVwirsMvMbRIm45GSMBQOASRX0T+zZ/wS3sfh/pmgXeqa/JHqnhC++0+HJba+k2AOiLIk+Rhg3l9ECoVbaQeSHGhVcrdO+n+RyzrtvQ4v4O+BPhd47/AG+Z/iLHqnxG1LX/AA3ZLca5PNoMb6dBPLvRYYljjAgiVBu3I0m/g7iNzG1/wUj+y/8AC/rO1sfLYJ4dt2fYMZZnlJLe/wBea+tPCmg6d4k8d2EX9iwaJ4ouNDuf+Eyg08sMqQscJO7Hmxh1cwysOiPtAywr4s/artr+X446lot38Rn8VSaPbW+n/wBpNbwR7dkYzF+4jjRtpJBIGc5BJINcmc0fZ4Dl7tHbk03LG3fRP9Dx8wynouPX0orbm0VWkwOSByAMUV8eqUlofXKpF9SfVP2sfhr4e8d6P8O7i9vr/U9alxbppunSzpGoXJZ2RSOhHyjLfMOMHNfCX7cHgjxL8Gf20dV+KHxJjjurHx1arJoWqWkLgQBAkZgcEDDhVQnvyPevqDQP2O9Q+BeiH4rWs2keOPJ8S3Gn6ZJBaW9vd6QMsVjkZ5GDeWIyvmxYJ/iDHmt79oD4CX/x3+Es3g34l+CNTa3ijS7sb6OEma0ftLEX24yCRkkBgeeOnqRwNXC1mkjz6eL+sUb1Gl5djK/4I2/t9/BL9mD4ia/4O+O9pM/hbxhDA8GqQiYf2fewFthcIwJhdXYMwDlWROApdh+u/hT4ofCfxtBFrnwO12G90uKNVmuLLUVuoXdlEilXVmByrqfvYwRwOc/hl8Rv+Caet6Z8UdGtPh18VdMufh6lta3fmeKtRtLPU9MnKETW3neaItu4EhyvCuMgkEtu/HL9pL4ef8EsPgRqviT4I+KNcuPEuoa0sWl6j4S+JaX9pFfGEOkt7FbStZyouwKUe3/eqpTKn5l+lwGIr4dqnVT5dert/kz53HYSlilzUmuZ+Wv37o/d228caY2pr4Yk8RW0Or/ZvtEFi1yonaLON+zO7bnjOK5z4jfHOP4OfD/UfG3xU1zR9F0qxj8+/vbm/bbwGIVV2ku5OwBRlmLYAJwD+Ev7Lv8AwVn/AG/f2lNDg8fSftT6kfEehEpMlx4e0i1t/skwJkKyJFsYAIAqursMFiVxXG/tu/FD9pHXvEHhbU7740p4otNSvJbSTS/EfjOfWL3TJljEssylYobeOKRNu1Fy42jdkFTSxOc4ahKUIpOS7tfpf7tx4fIsXUhGbbUXo7J/r08zvv2wPjTbftOftHeMPjhpGlfZItdvVbT7ec7T5UMMcEJkxu2syRIzYyAWOMgc/O3/AATM/Z+/Zk/aK/4KSeLfhJ+29a2uiaP8QfCV5pPh1LrxFJZXNh4iMlr9lktrkL5P2jZHOYfODQys6xFJTKkb+YeOf2o/i5pnxS8PeG/D2nWVvpsmmwPegRgNc5JdpH3s21tvUJhflGADknif2hL6fXPjjcSx27p9oS1wHPySHygfMAxgfe2nr9zrwAPnHiatKp9YaTUtWns77+h62MpwhQ9jB25dD3T/AIKm+I/jh8Dp7H/gl7+0L8R5vGWqfs/+Jb6Dwp42iuObnw9qljplxaWJgePfG0CRxspeeRYRcPApeK3iNfpfeeIPidqv/BGv4lfBy+/Z1+HHwo0PwX+zjqE+vfD/AMK/EV7vxDorXGmXF3Eb3TriylNh9uAkuQs11LchbgtIzzCSvwr+IX7QXxn/AGifHGrfHj4w+NU1rxQqaTper67rV5bHVL429mLW0cx5824K29kqyXSqxZlRp5DJMhkqz/G/xh8LvBWuab4J8caho+o+JdGl0jVRpl60ZvNOuPluLaUKRvhkRdrKRgkLxkDHdQxlXCY/SDcZ2W6uo/d0Vtb7I8OVBVIxj1Tufc3/AATw0iFf2RT4ktzFa6cJJJUjILtEQpUl5CfnOyOPoFHy8AV6N/wb2/tU+BNZ+PfxE+BKC/hXxXqbX3hsLvkgkeEHzC3ynYzJhgxbGABgEc/KHwF/aO+InwK/ZL0/wK/hJfs2pRyNbhFNxNK7MSCVQhUj2Hq7Lj1NfdX/AAbqfAe1Pirxv+1Tr3guCH90mm6BdtAAXeQl51R9+PlURhjtYHONwIIrqwtJKqku/wCB7GJqL6u77W/E/UrTfDexBJKxG5uoBBxmt6wh03TYPtEglYLwBFEXYd/uqCSa4XWfG15NvFxqSW0KtxGpxz68HPpXJeNvi8nw28OXvxAufiLpmlaRo9hNc6td6los160aqNwZBHPHgAA5XaxJIxjv9FTjGx89Jyse8+Dfi58HLvxbF8PH8f6VbeJJIPOi8M6jdLa6iYzyH+zS7ZdpH8WzHevyK/4LZ/8ABYHwZ+0xrk37FnwE8eT2Hhzw/wCIAfE/i3SNZvrW31SRPMiksnRIFNxAhyzbGdHwpXJGK5D/AIKEf8FgvgD8fvgRe6P4Q/ZntPG72mo/Zh4q8W6Da6bbwylCQ8NvDNJfM4BBH7yFSfvq4G0/ll4h1zUL7ToobTUrpRdYka1FyZBz7HJUnHTGR+leJmmNco+yoS3+0vy2t80y8PTqKXO9Leh+z/7D3/BbD4WfsU/DHw98LvF48Uat4cuLC6s9G8Q29qZorDdNGzLF5s7SSrHmYAOELFI8fKxYet/Ef9oT4K/Fj4pax4w+Cmty6h4XvPIbSL1rKSIzoIE3SFZFVgWk3k5AyWJr8MvCHxk8LeGPDV/Yavo80d3cRxRmKPZ5E8iBh5hhZNqMATggg5/MfZ37L/7dHwLg1DQ/g5e3er2uoXEcFtHfXFrEto85UAJuSRmGW+XlQM/nXg4/HYudBUkrxTvtrpp3/rue1lypyxkqs9G1byPup/FdhOMLaS4B42gE0Vz+m2Ut6Rb26sfk39cccDvRXkRnVkr2PonCnF2Phrwr/wAFx/24NMeW08N6N4Sh+0zBrhrm0uG8wkBQWaOZGOBx17960f2qf+CmX7Yd/wCGNGl8W+MIg+oWSGzi0aS4SNZSxHlgPMxwMBuuTu696+JdN1S7tZIpLdd2HAk29RzXsHwcsvFn7VXx20HwfpqG4tPDdvttgsRYLcMcljgEnbjOMdIvevqMRWhTwkm1rokeLhKEq2LSvotWfUXwb8X+Ofj34WvPAuueO7vxdfmFbTXbTW9YvUjdjGGdFO7btVCMjA4OAT0rzb4hftdv8M/gt8Sv2dPhdpXhuytbuzGj3EDafAE1cljC/wA0675kiO8knALR7uTg07/glX4r1y0+FPjnxdbGOTXbk6lLp80mdi3rxJ5bdDgBmzzxgda+X7LTRrt54i1+aFriWwZfsqsThUGSRjZJ/CpH3WI7DOCPBlia0Hbmd4vv6f16H0Cw9F3fKrNdl/Wn5n1F+wZ4++A37Pfxt+FEviP4paFHomm2d5eeJA04VLe8/drCrvyGJRTjbnBZ8/eGfPvi98Vvhp4z0/WX+JUt74o1LVfHOr6uG8P+KoreKLzPL8vcWEm+PBKouR8qY9qzvgv4XsvHPxD0v4da74j/ALLsdU1ttNa8ZIWFqjiNhIFdIlIQNnDyqDyGkI4X1zT/ANkKSPxZrXgee7h1i5s7aefS722urdrieKORInMsEdziBwyyMAvmblwyblYbc6M67muRJtt9nd2d9PQdWNBwam7Ky7qyuuv/AAT5x+JXibw9ovxM0jx14HnjnvtJ+w3NnqCLC7RSx4ZlyTg7WB4PoK5v4u6tqvjj4i2/ifRNStoJrlgkNvEmLdFGWKkJvKHJdxj5QCQAq4C/Q3ij4LQeBPEmt6Hr2lQgaQbnLuyO7+SCWyiSkDA2/dZj1+90Ph3xIvLGfwvquu6dNFBJbQNcwxxMVVWVSoUdTjD4weoHJzzUzxdek6dCcetv01PHzOnhE/aRk+aWvkeXeLPBOreD/DUXjm38UacIL+MW2p6Xp5ukuYo5nMwMw2RpL5cgTjzWy6RDBVSa0vFf7Kv9jeZe2Hx78IahHKiXFir22rW1xd28qCWGbZNYqF3xsjjLchhgkEE+7fBb4XeIvi14T/4V38LfgldeKbl5YrDXdY8u4a3VrtzHEHeN1S23ljGGkYKBFwc7mrmfhR8HPiB8LviRffsyfGlLnQdQhtTqPhqS5tlK6nbtNsb7O4YCRdwmOUZ1DRTqxXynK+rRzDEzwcp06abj5NJr1fVddTko0cO5RTbd+1tH21NQfEjTbX9nm08C6Dr32e/nMaajZyXKYDKqxsysWHyMFyOjeqiv0v8A2Mv21f8Agm/+xn+zzpPhvwZ8ftSv7m8tftWpWWq310729y+S8a2yBoYcEkfuxlsZLNxXw9qPw1stAe0htlDxRtIsglJV5EQbfmIZtx3Dnbt65BIGTsL4SsDMTD4D0vYLhgEM10W+WPcVyz9E6jPJP3mYVwQznF4abapxvp3PdqZThcTTinOX4H1v8TP+Cz3wF1Oyv7jwr48e4migd7Kwg0e7zcyAHYhZogoycckgc9RX5w/Er9qn9u74zX9/rOt/EfUwL9pAth/ad7FEsTE4iWKECILg49++TXq/irwSU8PySaV4GtEmMMaiSGzYsh3DgiZgMt949+49KfLeaXpoP2zRrMLhpPPks12lCeTguB82OcgZAHTFZ1OIMdWVmo9e/T5oqlkeBp7OX4f5HyZH8KfGGnyPc60tnbs6Hb9sS4AVvfEJzWf49+B3xZ8PfDq4+LU3hSG88Nx3UFvPrulXQuYdPnl8zyYJxE5+yvJ5UxRZ0RpBGxUMAce46l4n3ak2o2s21ZddinAihBQK8Yz8sd2ABjkfKwzzsk/1lcn8YNTvbSw8Z+E9Oe3jttT8NwNcwRptR5Fms7jIA6YYMR6Z4wDWmX5vWrYuMKsVZ9e39fiLGZNhIYeU6d+Zd9bngOi6xrWq6pZ2MMMTyyzpEmV+8WIA4Bx1NftTD+zV8LviH4R0ix8deDrO6ewWCeyuBEBLbum1htcfMvI5GcEdq/Hz9nrwPqmu/HHwjpJtkaOTxPYJOwuEwga4Qc5P6d6/d3SbJbeCOGTkKuBz04r0M2UIOEYabnj5dTVpOSPQP2bvA8PjHxzc6T9nLpDo7yKCucYliX29aK9F/YU0RZfF+vajsLNDpsUYwOcPJn/2mKK6sswkJYRSkt7mWPxEo4lpPsfzv+Pv2a/2ofgh8VtY+GMXwx17Xv7I1CSGDVNO0Se5ttQgJzHPHJGrAq6FWA3Eru2kAggdZ8Ll/az+CXhe8vfhl8EPH2leJbiR3fUk8IXTKqMuCPmTk7dwxz1PuK/W3w/+wv4sWOKbxh8T9LtWkw0i6fA0+Fzwd0rQ7s47Z4wea3L79mvwP4Kt1ll1C/1K5ZXTyIb2LfgDPmGMouExtbBcfKQc9BXJic1yWo0nO9n0T/4COjC4TNqKbUbJ92v+Cz8yP+Cbfhj4s6r8K9Z8K+ANRt7DVBrOy8k1CyWTyYsxibCOCBJsDbdwIBxxXl37OOhS+LPHN14bS3EzXWqRReUF4clZBj/VyEdccI59jX6y/Dj9lz4UfAS9vrr4P+BYNGvdVuvN1K7vby8ncs4xM2w3AUE5yAmADxjoRZ0/9mX9mnw3KzeAPgZ4Rt70SLJFBaaQsV7IABkhmYNv4YrlsHODjlq8SeKw8nzJO7ld+mll+DPbvVSs9lFL563/AEPyp8PrJ4W+IMkjyzKllrvmRO8e3OyDqGLMOeMMUwCfuZ+Y/TfwTi+LPgn4neJPipomi6peWuv6bqyaTPbBZ0t/3gMqMXtGRwVcEbI7dixyGjOK+09F8B3Wk6hHPpHh/T7QxSeevh+TSkEscIlCCfIBwNrbi5HDLgB8k11Gq+FtRm1NpFTEk9wIWjhsxKANgbdGk8aFQFJJKbjkEfwms4YiNCpzx3W3kE26sORrTqfKGt/Bzx78TfGer+K9T0TVLeXVn1a4llhtdP2Ykto5AEH2eJXBIbG3ZuZSItj5Y/L37RP7C2paz4v1A/DW40K00y7DefaahrRjuJgxDNuggg8q32ybwqxuVMYTAHIP6I+LvFmn+HNau/Dd1a28swuwy+XaI22YjhlBGEk5IbGDnjOTXmurJ4M17V7KDTfBsM17fSM0duu0NOPmDsD8u3a64YHIAyxOFyeXE5vPEVkoR6+ut1t1B5XSnQXtfl0sbX/BOP4VW/wl/Zmg8JPpMcd1b+JdPuNanth4fuYpZmuNk0inU2jkjT7Mluh2gqzwu1wwikCj50/4Kqfswal4s+Hei/tO/DZok8QfDHT5rw3dyvh2KO8ghv5ZJIX+yyjz3jjAnSJt7FBOqRtE6Mv2r8Lvhj4j8BRRT65/YWhWUsVndDSZpop5kW4jLxuy2yTRRuu9VZGZG3SkLvKSbdrw5qngyPTbqGSHXpraeymaKOPS4pJYpDvHkrukDOBIxIMrZG456DPuLO61OhCKhe2mrt/wP1PNWXUk5JS0+8/PH4X2uoftL/CSz+NXw/0lpdPukvftFvFPYSPY3SujNbSLHEj+Z83yqUVpAQ0SBOK7W2/Z4+KHnyQnw+0bfb5Y45StkwZPs3mAhwuwIefnGI9w2j95WD8L5rL/AIJpft3SfssDwje/8Kg+MF3bah4GbWb2+f8AsnVxH5LW8bmEJJ5k5jhZSsjrC9g8kxKPv/R7QLi68L3TaZ8XPhr4o062iXzY/wCzdPWW5AXDD5J2tFZMjactnb0PauPGuFOsnGLcZWaeu3Z6WTvpuduGrVJ07NpSWj2/zPzi1f4Pa3JZRy60NPsi6acfPmvLKHyvPjPMjErsCkfNv4TjzACQx5Dxr4GudF8K3euf2zpjRrp5nMdvqVuzt+/8rZsSTzC+cttALhfnxtwa/TjS/i7od/4SiTx34W1iDV2gANnqFha3MO/IDmOWGZ9yliuQ6jZvBAAA3dN4u8B+Fr65l8PXukaDeBmSJra6s/OS+THzAgRLJMvzK29F2rsZSRgivMjWw9S6itbPrrr5Wud/PWptOW39db2PxS+H/hvVPG9/e2+nwqhtLBb5jcTvCRGkBZgPtOwMccbFO8k9A3ynhbHwDrXxe/aKsfh5olq9xd+I9Phsba1jXOZWjjUEcc/d/Sv21tP2ZPgz4W1S91PwP4B0LQ57+3ew1S/0Oxjs2vYJsD7PuXazIQVj2eY28EAg4Irivh9+xV+yL8F/jJpnx3034dWej+MNAu1bQr1dUuZE80lk5szcFXQBjuYxx4zxhl3VvgsRhMPXhKd/P002+5k4idWrRkordaeuu58e/Bz/AIIdfFv4E+K7L41ajdanNDpWowXeoW11axpH5Syh9wIbIIIB79DxzX2LpYBUBcgDGMV7x8Qf2ofGPjT4ean8Lde8Dabpk2qQmFtbiimgikXfjKW58xwPl67juyDgZArw/S/Cuux3LW+nr9uETKJTDEytEGICFwRxu9ATzkDJBr6bOM2ybF14PDS0S637+Z83leCzKhRl9YWt+lj6T/YR0l1tfEeqYwHe3iDjuQHJ7f7QorX/AGL9d8N+Efhxqa+LtYtNPuZNbdWhvLpImG2NBjDEd80V7GAdJYSNpL7zy8ZGq8TL3X9x5LrWjJDaalefaUub6WxFzLG0rRqCAGWQl2ViGK7WOc84JAo0Lx14E160i0HxV4n/AOEhvWEtzHpVjpDSNJ+5P3ZLiGQhQHG5kUPsJHU5rLm1TWWF/wDbrYyHUI5JLi6mtmt4okCnEMqwhtwCuQBIQec+tQeMR40niPiLwdcjRJ4CC9zaxpc3U5bK/u2kKx/MNgzLtPXLKFyfyb2eyP0DmMTRvBOoT/EHUNR1jxJdCwtLMIfDGnQ2plscMXSOUW0WW+VopFERHJ25cdd2RLPToxHfvo1pcXhK3sxijRXjBbKZw7N/DkFmPP8ACeBFPe+I9U8H28ni/wCI7ldMvkubibXtDgvHuZkaO4Rolhds7WDY2sXRlG0jaDWV8QodCF1YeIPD+tGCTUEuLpYrXQGF3M5j+SSNwmYZBvI3SYB8wBuNytrzWsjJrdnSXPg+Xw5Z3M9x9sFlLcxpbjRo1iDRsQAzKu4yD5vmZjwATtVQWOfpsWk60k9gbuyuF0ZgLK6MBSRZGbMgDRDMbbNq4XazhiCD96sktrWl2T+KPEOlX+kaPbxK6rcXk8TxzFhkmFGxK7SBAA5P8JQZZt2JY6J431PRJdV+EaM4nnZNV/ta7nTy5WQfOqhZstyv8JXBPJwVqXXe2oKnDm6I8S+Pfi7UtO+MWqHQLyKSxiNvIFd5WkhZIV3qRMN6sHVuGGcYGMACuS+Ef7TmpfCjxL/wky6dJdzm0SEpCQpWP7T5pVZCrG3kEixTLKoYgw7CrxyuteqfET9krXPENtE3iXX59D1W7t3R71JVmt0cA7BtaCEsoIJCqiHBOc5DDzqD/gnd8YNG0OP/AITr43aPBqNxJny9N0CV4kTcQmA0wYAgcswVQRjJ5Nb4eth4vmejXk/0uZVqeIasndPzPqLw746Xxp4F03WfDOso1trVpbyJlt9ijRmN38ydVVyS0ZRlMC/vHfIUgBodH1zT7+Q/8Ih5WpMrJBLb2sU729ncIqszvLOg2F32udxAB5CR421lfBLw9cfDD4Q+EP2bfiT4m8F/2/bXN1/whVjqSPpFxrNobxrq4uF3zXP2yeJrxsRQIHVY4i4jVzNXy3+3Z8ctU+Amp/2fo2rG3tJBOk9na6bbtE6zSs7+akp+cM6OSyhgCG3MpkUN6MKDm1Kmrp/L+vuMY+97s9GfTH7Y/wCxPd/th/DyO98d+LPBVrrfhq2ebQU1/wAQWE01nNFC6JCkollubWCWIIoVUCo8cMpT92rjrvhb8T/icvwh0tfE9hpHiHVLV47fXL3wX4stNSsmuo0OHLloWR9kmWXYu1pCqqyYY/lCP2kLfx1rEPiO98P2NvOYAstxe+DEllmBYYBaO3fcMEdGwVU8sSQeNs/jv8TPh18eG8U+CNaf+xtaElnOj6Wl1YWskuxJGWB45Fj3fu1yse4piNQVASvco4DEVcJytWa1V3f1WiW5w1p0KVZS5r9HZW+Z+3PiP4g/Bz+zP+EQnS3fVblY7izmhumErQSxMkhCCNlOy58rY0bhmjaTzNodFHT+C9H8MeFtFOmQ+HZ7xyDc29rqNwkLPMAjJ5ruZJnw6RspJLZMh+RJWI/Nz9ljx5+2b8YtSsfD2i+EbyWOz0lNLsbqWIWU8topX93I4EZkYxoYg8yyDa2dyP8AvD+ovjvxL4f+IXhex0nxXYaDqmo2mhI+v2umanA1sJsrL5CGV0KlEaOcmZgNlzbhSNpZuLF4eOHw/tpJcy0Wnn3699S6U5Tq+zTdn5mG8Xh62v5bDRvDd5K0hVLhr24jka8kighEkzsGZIvNZflUgOEZRt+QuLVz4m0DUfh2NN1TRV0q6mijbS8y2nmPkt+6jjmgWWM52fLsTBBJZcE1y3hfwutz4muNb0bxTP4XWOA/8S3wtqNhcqqtP5UBmghgkUNMIywJ80gEpuQqFPe6pp9vc2L+G9e8P6BqcqpGdQbUwJ9kLvuXzVS2VSBtYJnbnYpycbj89NKdRya3d/TyPRi3GKSOVSwj0uS10rU7lodWk0w3Exlu42uVj3EBZtoJ8oMSS8XygrjIz82Rpuk67q9hrEerXl55lsADplhEsr3zMiNEqLdgKXboHDbd5KsQY3296+m+Fr3VYfE2r+JNJXUJbhbW1vksIIWzvbbApdRLyH2gbzuBBH3/AJs6w8A64vjKPxHceNNR1aK3heW20VNMjtQd3I3S24EgKnBG5SR0AJODFNU+e5U3Pksi18Or1bjSw2qaLf6PfJEitP430JVnnj5wPMgm8mTBHADbkBOR82SV3VjaXcA+wmGbTbrmVTGkmo5ibDENuUmJt7MOOG2nk4+Ur2I1FbQ4HTdzxa/1qTSdG1q5urOzupY1b7ZYDc6+YLZSLT/WyNvIIPywgMHyI8tzwOjT6ncrf61481zWtLfTbDTry/tNQZ7eGzMls0jRNI91IYVjiSQTM8gG+Rv3p3YN/wAFyfELVtG0+X49+AtF8Ey6n+58OaXq3j4azeNeNIsaqY3ghjcbWV8Qzu5BVAAxwtv4seDPC3jixm0rx9p+nSx6Nqcjxa94q8HPFYWrqzRFkutTMkSxvJsjBiDOxdNqld7L5ypO7v8Agdk6jtdL9Cn4P1LwP8ZdavtZ+EvjPwnOmjNGqT+D9TivFgSQguLuO3uNh8wRSpGWDMimQxspG43vDVj4T8f6u9zq17Lremaa72D/AGa3to7fRZwi+bBKxdplkBCKyb2CNy4UBWGp8HfhjrWjRDUvC0/h67s50DD/AIRews2trvYGwJJ4IoAn31ZNhb7xyoGVbotK0vw9p2gS+AdP1GfTLgRNqmq3/i+eW88o+bGWaFbm7cxFZZI2idnZYiijac5ESpNvt2ClWbj7y1IrPwVHfeGbc6L4Z0vVtGu/9K0yxhsle3liOXheNt0kBL8MHJAO8NwTVPw38PjpHjPWvEB8da7eR2srafYaVqVpI0dhIIioZF2LNKhxnzJJQjb2KuAV27AfxLL4Y0u2+LcE+tXGpxSObm3uNINlbmRn8hQ84iaSbySh3Im0neQoB2iRPEnjLw6W1XSofBOkaTJqFvZvPfarcsbm5kljit4llnjiCSlpEVYsHc8qhWLEij2Cihur7ysW9Msl8XXV3b6TpOmxajp1hbySzRalb3K208jymS3KKFmDDyhu8xEBLAKSVbD/AA34di18TavbIYb+MS2yhQJZflwNrOg3bQVDEI5BbcT82a4LUtb/AGefDVxLdeKdctX1NNfOkWEqWmqafLZXUrbSBNEzFYX89EjmUxwMCcSMCWGx8Q/jn8Mo9Kt7XxBeJeaddXNvMl9pqubaUxXMZBEiTA5ikUSbyVG6MbdzgRtnKMU1bQ0U5dT4Z/4Ls/DLUviF+yna/E3SNDgm1TwB42klvzokE1tb2Oj36tbym4SYL5txLcC3ZwgzG00kJWTy3nf8rdS/a9/aN8SaFp/hv4hfFXUvEtppVyZrRPEE5vJFB3FozNKDNsO5srvxyMYIBH7rft6W/gD4lfslfEXwNpHgDUNVv9c8PSw2lqb+WK4uLmCZZYHDl/Nk8qeNZRHnbJtKnIfn+efxHp8+nanNbTIFZHIwOh96+uyKtRr4Z0/5X89f+Dc8jHQqUqiqPr/X+R1U/wAbr83099p3hbSLMzSsxjt4pSq5wMDfISQAoAyTjnHU5jsvjh4m0+7F3p1nZwOImjQxo/y7nV2YZbqSinPtkYNcOznOKEJLd6+iVNJHlus29j334c/tdftI3HinStQ0v4sanpd9pczNpGraVItpfaeZIRBKsF1CFmhSRMCRFkCSYy6sea/d79kLRda+A37IvgrwV8P/AId65e+I2htlv4NfSe2W3eeXzJpHdoSIIkMkj+WV8wc7laQuW/Bz9h34QRfF345eFvBd1Bevb6jrEMV4+nRB54rYupmdNwIysas2SCo25PAr+hXwL8az4g1ibStV0k6ZqUoaeWF9ZglM4zz5aiV3BAA5MajCnHpXz+cxU4RivU9PCzszf8K2PiPVdZ1Xw34j8T3F1q1jaquoXdtpt5bIUmXdHHbm9aZXQgEtJDOdsiYwjKRVGzudU069Ol/EcxaHqGq6hcWunLb2wvbW+QRhYpFkiRPLBDjKSLGxcyKrPhJKyvFdp4r1KO/8IeNL+61PQPEKvbQ21h4eu532lgRE8lhseMBQUzIyq4YDcfnWo9a0rQmGhahfeF9fvLC50+bSm0fU7PUdUvDqlzNDLZtNfQrdMltERepNcJLJDEJYzll2AfNzoWZ6EZo9Ci0LXLT4cS6NZXdxa3UFxFLdWsFmJhIluCFiiSZYw7GItGrOWCmR+WyTWFoFt8Rn1uS8uNThtNMhtoip1jwrO6RujqY1itob0Rl0ZUbcQGHyldwDbcyw8S6ol/p7/F2XTNPtWsGGmaTotnq2sSrLFIVWeS/MMaxNsDo0T2/mBicytgrW22paRJp8AvPG2qMYVH2q50ix1OJ52zlmSELuAye8pPXkmsbNMq90bNt4I8E/FGK5vPiDB4auL2W+aaCS01K6trqKBQI0iPm/vY0BDEoNiM537NxLErR0PxV4IfQ/7S+IfxD0+0jklSGyvdZkWwmk8uNVKlbuGOTJG1iSXDMz42ABaK7YylbR2MORPdHJWNpbDXry41zxPqt3HLCjK8E7wRM20rsCiXcrjAYlFjBJGSzZriNJ8EfEvwTc2uhaX8Z9Q8X6Te6laya6nj9I5biOOGNEZLOSzW2SJ3jjJYSJKpkAkADNK0kHhXwp4b8O6e2g6Z498ZXn+nW073Os+Ir64mMkDiUIsksm0o2NsgUYkUlXDAcQfFbQTZi9+IHh2eSz1K9isrfxDdwv+8n022N00cSFifLaOS7lkDRbHJOd+UVTxqq07J/gdnsIqN7fix2qX/hi7Oi/F34P+CPtD39klxpPiGK3zarE7dWfKy7ypClNy43bSCNyMzxH4g+N/jmCysdRt/D+ntZ6nDdi7jdYxcRI3mNauZorkRoxXD7Qp5CqcDDZ2meJdf0iS3vpdTu9St7K0lXzojDJfQI6cbJJVbfkhGw5+You4kAq17xZ4M+FjaIt7491q9lgmQhGv9Qmgu5gY2fykKgTtMAsjokZV8qAFyDUVJyvu7mcYJ6q1h3xF+InifWvCGr2viLQDoNjZW0v9qa7oeqaXLaw2kVukvmu968KCM7poWEsJVSrNujCpJXBeGvG3i+wsdC8VyW/xP1LQmihfShPd+FLGy1GGSNTEnzXEYnjljwQ28Hbgr13Dr/Cuq6bpkUWneENBv8AVp7N4pD/AGpJaQtN5gVZL5YxsEUhET4AjQZYKFjX7lD4k+I38E6XFa/E74o6NZWeoXSlb3xDqdvZi+kjVSQkMyhIyCqHEZG0nfkNknmlWt7lrs6I0uZcydkN13xB4c/aj8MJY3/w1vtOl0y7mntIvEt7NZz20ihfLliOnzMsyEs3Anj+6W2kYNZtz4d8fI9x4he20rSdTuSH1XUlv5btAu1i0sKyqrcK6piVzGv2dQqBTmustvAPxFuFgsXk1O0aK+N0u10RZQsgEsTnB+RgiqZWyVVwytzWrpHhvWtVuzrF9eRWfh5LZ4UtprOV7w3SujI26NpFERjdw29FKsq4ZxuCcFT29TSnsdcVTj8Z4R480abxH4K1WG9Fprn2eDdr2na9ZxxwPbZfzEYE+ShG1/nO5DjncNpHwn8ff+CWWq/F34k3Unwo0KPwndMjXWraZqOopc2VozhRFFEIYxJBvwZBGxKqMhQqhQf1S8VeFPB99faHc2+geJ7zV7W3aKa98PaxdrpunXV5H5KC6hUqLuHziqLLJY3CW+HmkSFVkdMnTdD/AGSf2avBlr8OvAvirQdM07QtUls7Tw7b+LLkXllLNcIhiBt2luJsXLTM3mKzRiY5ZEiYHswdbGYL36LtJ/P/AID8tOr7a41YUa+lTb7vz1/H89PxyvP+CI37aEEC3FjZeHNT3lfKjsdUnTzAWVSwaa3VMLuBPPTpkkAs8Gf8EV/2xNe1PTW1TS9G0m0vr9YCb+7l89R8zOVh8tXkKokj7RgkRtjoSP2hf4fjwdPdr4/8VazEt7qkkkNz4mlkkhtIriPZ9jguYldAsbCQmZvJlIdQzOoIE+r/AAN8JWHha606b4fXfirXYtYt7jS7DwrqOnJf6TNatKYdRiN/NDHG0cpIILNuEiqY2R5BXt0uIsxslKUXfyt+Z588twnM2otWPmP9ib/gldYfsj6gnjyLxrcapr85MFnqjWaWawwsHE8cVtMGYMyfKSzsWjVmXYGYH7M+Hfgrw5aX15qcWmTXGq2MOySXUJQkuGG7cAH8vYdpVWClgyyAtjIHiPws+IL/AAi+LHxYsv2mv2pLDxGvjDx1Ba+BfCvhaefVpdBiX7Sttp8lvaW5+x3UiIqeXj99LbNtaWQvu988Par4jh1rT9V8QfD/AMS6ba27SRQHVtSs5L0glN8n2a0EqPZ7WG/M32jzEXbarhZBGIzDEVNJyv8AgvO3oEKFK90jL+Gnw7m+B1lfeL9W8VeML7+07thb+H/EHiuXVoraVpHCrDPMpm+eOOM7XaQRrA+0KzzNLufDOSXwBA+nW2k3MNjqOsPIkTajPMsLXNymyOITswijjDHbFEFQ4wqIcBjwl8QPA3xa1RfDdm0505BPM8mlu1pCA77E+5ebi+6N3ClMkDzMoWw/JfFL9oDx74D8ReFNC1f9m/WLiDxT430ewsNVtfEkFslgrTljcH7O7TrHtQO0RTynjkeOWUhvKfhWJlVfK3qzd0eRXR3vxrk+INl8GvE99b32ieEL+z0ctpGv6jM19b2srZTLI8St5nQRjZKCzrlJOYnz/gBb/ELW9J0fxnP4wtvEuk3+hqk7y3KSosoknBkieDSbUb9sC+Ysih1kYxhYgmZ7mmfG39n/AFS2u/ht45+I2hSiG3MWq2FrrhmJKW6DDbUhRR5gUeSF2SLvymGdB4x8V/21fB3hTVb7Q/AEt3cXFlbwjT9NstZnhghtMvGkjxMSgj/csqhI2VtrgMwUmrpU68qKnBXu/n0/AzlOEK3Iz3PTPGNn8T9Pk8dfALWfDPjrTvtjWc50zxTbi1spURHZFeG1l3uQ6MwdyVBTbgMwor4i1H9oz9oTXvGGq+OvAutWGmaleLbW/iQiCSzkmmjRjFHcuE/eSwxsEVAzKkbgAkMDRXYsHXa0X3tk+2prd/cjnp/25PjX4Y8KXel2/hjS/EHiSzsPtMkE0ymQ7mBLiGAxZCITtVSCdqjc7HJ1tO/4KKW99eadpE/hdL2x1i0kXT/EyO3lSaiEkbDWbPv8lVRm2mYvlShCbQ1eL3HhoWXiDT/iJofhjUtMvfNdNQgtNLa4F7FIrZWRLfJ3AhSJCSAUGQcjEniDw14U0jRU0zUR/Y0F9rEV+iXU5i8yWKeO4Kqs3AVmRdyrgfMx4Ylq7pZVCG8GvvMIY2U/hkn9x7TqH7avwyg8Jx6Hd/EK1082epmK8vNC8MOsAkDOptdkwuUXAySoZWBjGMLlTc0X9t/4Wa54o0+HxN4qstXt4IQlvrE2kvFO/m3KRSRBUeIMSSspZVXZHCQElYnHhVr4P0t9eu9d0TxFqltLqFvGl5HHcQSRyqjOVYGZHZRukPyqdozwoOcxXeo+HNL1aB/Et1LLpum2xe6v9UhiiVZicptcqkZ2oXUlOP3mCSwOeZ5XT5rqTf3f5FyxcuWzSt/XmfYvgz9rr4LrcagkviVUs2vIxo08GnxqZYTDbuzAs8kk37zz13OsRG0qsZVVmk8r8B+P/wBll/EGvfETx/8AHS68U6ne3Kx3njDUBbwtPaxIUiiKokUFtsEhTMaKspJlwfMCr52/wv0C+tguqmG6USmUfuQFOfVQcZxnoACSSAOlch4d8AWuhyTXFn8OlN5O0kdxdaGloghjYhRCXm8p5BtA4KY57gjOayqV3y1LfI0eMp8q5oX+Z9Y+CPH/AMHNA8W6Q/w/+O2rtYCwD2+mNrE97B9l8kAeVCbsxRbfMh58ogKxAHzB07C5/ae+E9z4c1TVdL+Lst1bvcS2zafDDEJoZLZdj2kDqy/NuhlyrsHEjON6LgD5S0XwFNJPd30/hOLddIJRA94JguWLGJiQ2xhldpDuDgktyK2dZ8FatPZ2cul6MbvUY5Y3NnHqMlrtCxn5FEXExLkAIxEZ5JYEcpZXO1nU/D/gl/XaVtIfj/wD6T8U/Gr4XeM/hhH4DT4q2tta3cMa3N4ly8kyxgLKsbCJWJ38LIGYFkkckksa5TV/GnwA1C2n8AeKvircMZbCCU2GiWjuyQSF2RySgdd4RlIC/wDLNlG1lYj5z8Kv4S8R6fF4lv7DWZTrwSeO7sZDqNoFECRbo5Ld5UhjKoqhFYK2GYAnea6TTfh/4a8TRm7ukk8mKNg76laSwySBcjZtkVXVc98AYzjsaFk8Ypp1GR/aPNJWgfTPiL9un4ZeOvAa6l8PvEki6dMCqPDby20sjpLj9zNFIHhICH7yOGyoKhWIbzjw1+294T8KNf8Agv4n/DrW7u21mWTztU8Qaymr29xGkCrvkjk8rBZ2VCiqWKomTkfu+HsfDeox3dhpUJhudOgW4acXGsTeZajkRRxxOkgkAI2HLKeARyuxqmra74Smk1PTrfV3+12Dql3HIfIjUOgYorum1gcfMyknI2k5UKNKeT0NE23/AF5Ic8dUs7JG14s+L/inVvit4V+LOh2dpolp4O0q/j0q1sPDNvBeSi4kTdbyGWF2hijtVa3EcSQzYaVhcAvgL44+PfxZ+IGma/8A8J3cQt4efTbmdrYancwx2xwGn3tHMjywoSWWO4DIvmEKUjUxD58X9o34fW9+R4m134bmwgtgY7nSvHEt7crs3O37oWoWVpHVQdoVlVmwGYqBdT9qT4F+LPAlj4b8TE6vPLcJPfaZoi3gsfOJxhhMluJV4DlHQr0+8RmuhZTDRcrdjmeNl3sei6B4/wDFuu+CNMu9E+INvpVr80mnLoMCxQPayTH7QqCIRjlGYIQUCMzHDEFGzfEOm/EfxTrjeI/HWqw+K7OdryO80fX7918lUunls5Y7Zo5hcTSjy97STRLtVHEfzGJcrR/H+o+Kry68Q3fgaHzIomstKMmrmSSeEsWM0rCBXjYfKdod1Ad8Enr5RoH7cGsfDT4j3WpfFjwbb6poOjE2niTwPZxSW97p8QEZ/ta2mE2b0KRKWiPl7ImRvnUSTx9tDKo0mkoJf15amFTHOad23/Xme4azo99odzqOn6TpNkwubaSYa9qTqlrFM0ilvMiUhpECzSbUXaW+zOrPH5iS13Oi/An4o6rqVxouj+B9cgtIbjz7+y1+zitrW5E+6Ndz3MQby4lj5W3G8KN0iyPIN/ofwl+M/wAGNe8A6d8TfgFpum6npclh5MWraTHunSFdu9J2cGbPyIXEvzFsFjnBPzd8fP2+vif8TPH+r/Cr4S32s6bpcV4lpP4ksRbwCGURlpF86XcUiPzZmwpTYGVipzXp/UMPQhzVJfd/wTgeLrVp8sF959T/AA1/Z78AeHbEzfEDxbLaXo8xLaHwkkUaQI0rs+XmhO/zAIXYBEw6sCZPlaivg3wr8IT8YNRu/iH40hsvEDTyPb3WswXiTS+fGEAi3Xkk2UA3HKnr1JorBY3BQ91UvxNHhcVLX2h//9k=\",\n        \"photo_exists\": \"true\",\n        \"pin\": \"PxundUqtIoZjZagX+3VnaEwacJSxHH+89uYiJRm92vE=\",\n        \"pin_exists\": \"true\",\n        \"login_id\": \"admin\",\n        \"password_exists\": \"true\",\n        \"updated_count\": \"5\",\n        \"last_modified\": \"26\",\n        \"idx_last_modified\": \"33\",\n        \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\n        \"expiry_datetime\": \"2037-12-31T23:59:00.00Z\",\n        \"security_level\": \"0\",\n        \"display_duration\": \"20\",\n        \"display_count\": \"3\",\n        \"permission\": {\n            \"id\": \"1\",\n            \"name\": \"Administrator\",\n            \"description\": \"this is a permission for Administrator\",\n            \"filter\": {\n                \"UserGroup\": [\n                    \"1\"\n                ],\n                \"DeviceGroup\": [\n                    \"1\"\n                ],\n                \"DoorGroup\": [\n                    \"1\"\n                ],\n                \"ElevatorGroup\": [\n                    \"1\"\n                ],\n                \"ZoneType\": [\n                    \"-1\"\n                ],\n                \"AccessGroup\": [\n                    \"0\"\n                ],\n                \"GraphicMapGroup\": [\n                    \"1\"\n                ]\n            },\n            \"module\": {\n                \"Dashboard\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"User\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"Device\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"Door\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"Elevator\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"Zone\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"AccessControl\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"Monitoring\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"TA\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"Setting\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"Video\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"Visitor\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                },\n                \"Report\": {\n                    \"read\": \"true\",\n                    \"write\": \"true\"\n                }\n            }\n        },\n        \"inherited\": \"false\",\n        \"user_group_id\": {\n            \"id\": \"1\",\n            \"name\": \"All Users\"\n        },\n        \"disabled\": \"false\",\n        \"expired\": \"false\",\n        \"idx_user_id\": \"1001\",\n        \"idx_user_id_num\": \"1000\",\n        \"idx_name\": \"2001\",\n        \"idx_phone\": \"1000\",\n        \"idx_email\": \"1000\",\n        \"fingerprint_login\": \"false\",\n        \"fingerprint_template_count\": \"0\",\n        \"face_count\": \"0\",\n        \"visual_face_count\": \"0\",\n        \"card_count\": \"0\",\n        \"qr_count\": \"0\",\n        \"mobile_count\": \"0\",\n        \"need_to_update_pw\": \"false\"\n    },\n    \"version\": {\n        \"dbBiostarVersion\": \"2.9.8.1\",\n        \"biostarVersion\": \"2.9.8.14\",\n        \"isMatchVersion\": \"true\",\n        \"notiPopupOpen\": \"false\"\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            },
            {
              "name": "Login Failed",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"User\": {\r\n        \"login_id\": \"admin1\",\r\n        \"password\": \"{{lPassword}}\"\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/login",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "login"
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "400 Bad Request"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "150"
                },
                {
                  "key": "Date",
                  "value": "Tue, 21 Jan 2025 02:05:37 GMT"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"101\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Failed to login for invalid username or password\"\n    }\n}"
            }
          ]
        },
        {
          "name": "Logout",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "bs-session-id",
                "value": "{{bsid}}",
                "description": "BioStar 2's session id. Generated on successful login."
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/logout",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "logout"
              ]
            },
            "description": "This API is used to Logout from the current session.\n\nThere are no body parameter on this endpoint.\n\nIt is required to have `bs-session-id` key on the header, the value generated on successful login.\n\n#### Known errors:\n\n- Placing \"/\" at the end of the endpoint"
          },
          "response": [
            {
              "name": "Logout",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "bs-session-id",
                    "value": "{{bsid}}",
                    "description": "BioStar 2's session id. Generated on successful login."
                  }
                ],
                "url": {
                  "raw": "{{baseUrl}}/api/logout",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "logout"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "107"
                },
                {
                  "key": "Date",
                  "value": "Tue, 21 Jan 2025 07:59:20 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        }
      ],
      "auth": {
        "type": "noauth"
      },
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "pm.test(\"Status code is 200\", function () {",
              "    pm.response.to.have.status(200);",
              "});"
            ]
          }
        }
      ]
    },
    {
      "name": "Access Group",
      "item": [
        {
          "name": "Create New Access Group",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"AccessGroup\": {\r\n        \"name\": \"ac_grp2\",\r\n        \"description\": \"\",\r\n        \"users\": [\r\n            {\r\n                \"user_id\": 1\r\n            }\r\n        ],\r\n        \"user_groups\": [\r\n            {\r\n                \"id\": 1\r\n            }\r\n        ],\r\n        \"access_levels\": [\r\n            {\r\n                \"id\": 2\r\n            }\r\n        ],\r\n        \"floor_levels\": [\r\n            {\r\n                \"id\": \"32769\",\r\n                \"name\": \"floor_test\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/access_groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_groups"
              ]
            },
            "description": "This request is used to make a new Access Group (AG)\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | The name of the AG. Must be unique |\n| description | String | N | AG's description |\n| users | Number | N | List of user(s) id of the AG |\n| user_group | Number | N | List of user group(s) id of the AG |\n| access_levels | Number | N | List of access level(s) id of the AG |\n| floor_levels | Number | N | List of floor level(s) id of the AG |\n\nIf BioStar X does not have license for Elevator module, skip the **floor_levels** parameter or put it like this: **\"floor_levels\": \"\"**\n\nFor numeric value (such as id's), the value can be put on a quote or not.\n\n#### Response Properties:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| AccessGroup | Object | AccessGroup object |\n| AccessGroup.id | Number | ID of the Access Group which was created |\n| AccessGroup.name | String | Name of the Access Group which was created |\n| DeviceResponse | Object | DeviceResponse object |\n| DeviceResponse.rows | Array | List of device responses |\n| DeviceResponse.id | Number | ID of the device which updated it's AG. |\n| DeviceResponse.code | Number | Response code from the device. 0=Success |\n| DeviceResponse.result | Boolean | Summary of device response. True when all devices successfully updated (code=0), False when even one is failed (code != 0). |\n\n#### Known errors:\n\n- Placing \"/\" at the end of the endpoint\n    \n- `name` is a required and unique parameter"
          },
          "response": [
            {
              "name": "Create New Access Group",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"AccessGroup\": {\r\n        \"name\": \"Test1\",\r\n        \"description\": \"Test1 AG's description\",\r\n        \"users\": [\r\n            {\r\n                \"user_id\": \"1\"\r\n            },\r\n            {\r\n                \"user_id\": \"2\"\r\n            }\r\n        ],\r\n        \"user_groups\": [\r\n            {\r\n                \"id\": 1005,\r\n                \"name\": \"Administrative\"\r\n            },\r\n            {\r\n                \"id\": 1004,\r\n                \"name\": \"Executive\"\r\n            },\r\n            {\r\n                \"id\": 1015,\r\n                \"name\": \"IT\"\r\n            }\r\n        ],\r\n        \"access_levels\": [\r\n            {\r\n                \"id\": \"1\",\r\n                \"name\": \"Administrative Employee\"\r\n            },\r\n            {\r\n                \"id\": \"3\",\r\n                \"name\": \"All Access\"\r\n            }\r\n        ],\r\n        \"floor_levels\": [\r\n            {\r\n                \"name\": \"FL1\",\r\n                \"id\": \"32769\"\r\n            }\r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/access_groups",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "access_groups"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "1644"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 07:52:34 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"AccessGroup\": {\n        \"id\": \"14\",\n        \"name\": \"Test1\"\n    },\n    \"DeviceResponse\": {\n        \"rows\": [\n            {\n                \"id\": \"40059001\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059001\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059002\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059002\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059003\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059003\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059004\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059004\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059005\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059005\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059006\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059006\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059007\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059007\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059008\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059008\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059009\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059009\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059010\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059010\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059011\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059011\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059012\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059012\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059013\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059013\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059014\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059014\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059015\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059015\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059016\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059016\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059017\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059017\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059018\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059018\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059019\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059019\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059020\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059020\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059022\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059022\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059023\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059023\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059025\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059025\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059028\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"40059028\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"542071155\",\n                \"code\": \"0\"\n            },\n            {\n                \"id\": \"542071155\",\n                \"code\": \"0\"\n            }\n        ],\n        \"result\": \"true\"\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        },
        {
          "name": "List All Access Group",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/access_groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_groups"
              ]
            },
            "description": "This API is used to view all available Access Groups.\n\nBy default the result will be sorted ascending by `id`."
          },
          "response": [
            {
              "name": "List All Access Group",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/access_groups",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "access_groups"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "Set-Cookie",
                  "value": "JSESSIONID=BEDFE7BF63ADDBD1A0B5B4E36C9F50D7; Path=/; Secure; HttpOnly"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "4149"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 07:34:09 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"AccessGroupCollection\": {\n        \"total\": \"12\",\n        \"rows\": [\n            {\n                \"id\": \"1\",\n                \"name\": \"Adminstrative\",\n                \"description\": \"\",\n                \"users\": [\n                    {\n                        \"name\": \"RB\",\n                        \"user_id\": \"2\"\n                    },\n                    {\n                        \"name\": \"AM\",\n                        \"user_id\": \"3\"\n                    },\n                    {\n                        \"name\": \"JJ\",\n                        \"user_id\": \"61000\"\n                    }\n                ],\n                \"user_count\": \"3\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1005\",\n                        \"name\": \"Administrative\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"241\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": \"1\",\n                        \"name\": \"Administrative Employee\",\n                        \"description\": \"Access level for Administrative Employee\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"2\",\n                \"name\": \"Executive\",\n                \"description\": \"\",\n                \"users\": [\n                    {\n                        \"name\": \"Sib Steketee\",\n                        \"user_id\": \"60014\"\n                    },\n                    {\n                        \"name\": \"JJ\",\n                        \"user_id\": \"61000\"\n                    }\n                ],\n                \"user_count\": \"2\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1004\",\n                        \"name\": \"Executive\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"15\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": \"2\",\n                        \"name\": \"Executive\",\n                        \"description\": \"Access level for Executive\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"3\",\n                \"name\": \"First Shift\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1006\",\n                        \"name\": \"First Shift\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"149\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": \"6\",\n                        \"name\": \"1st Shift\",\n                        \"description\": \"\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"4\",\n                \"name\": \"IT\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1015\",\n                        \"name\": \"IT\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"5\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": \"1\",\n                        \"name\": \"Administrative Employee\",\n                        \"description\": \"Access level for Administrative Employee\"\n                    },\n                    {\n                        \"id\": \"4\",\n                        \"name\": \"IT Closets\",\n                        \"description\": \"Access level for IT Closets\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"5\",\n                \"name\": \"Second Shift\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1007\",\n                        \"name\": \"Second Shift\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"149\",\n                        \"user_groups\": [\n                            {\n                                \"id\": \"1014\",\n                                \"name\": \"Security\"\n                            }\n                        ]\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": \"7\",\n                        \"name\": \"2nd Shift\",\n                        \"description\": \"\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"6\",\n                \"name\": \"Security\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1014\",\n                        \"name\": \"Security\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1007\",\n                            \"name\": \"Second Shift\"\n                        },\n                        \"depth\": \"2\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"15\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": \"3\",\n                        \"name\": \"All Access\",\n                        \"description\": \"Access level for All Access\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"7\",\n                \"name\": \"Shipping\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1010\",\n                        \"name\": \"Shipping\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"30\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"8\",\n                \"name\": \"Stock\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1009\",\n                        \"name\": \"Stock\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"30\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"9\",\n                \"name\": \"Supervisor\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1011\",\n                        \"name\": \"Supervisor\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"30\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"10\",\n                \"name\": \"Third Shift\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1008\",\n                        \"name\": \"Third Shift\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"149\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": \"8\",\n                        \"name\": \"3rd Shift\",\n                        \"description\": \"\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"11\",\n                \"name\": \"RnD\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"2018\",\n                        \"name\": \"RnD\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"151\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": \"5\",\n                        \"name\": \"RnD\",\n                        \"description\": \"\"\n                    }\n                ]\n            },\n            {\n                \"id\": \"12\",\n                \"name\": \"Test1\",\n                \"description\": \"\",\n                \"user_count\": \"0\",\n                \"user_groups\": [\n                    {\n                        \"id\": \"1005\",\n                        \"name\": \"Administrative\",\n                        \"description\": \"\",\n                        \"parent_id\": {\n                            \"id\": \"1\",\n                            \"name\": \"All Users\"\n                        },\n                        \"depth\": \"1\",\n                        \"inherited\": \"true\",\n                        \"face_count\": \"0\",\n                        \"user_count\": \"241\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": \"3\",\n                        \"name\": \"All Access\",\n                        \"description\": \"Access level for All Access\"\n                    }\n                ],\n                \"floor_levels\": [\n                    {\n                        \"id\": \"32769\",\n                        \"name\": \"FL1\",\n                        \"description\": \"\"\n                    }\n                ]\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        },
        {
          "name": "List All Access Group v2",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"limit\": 0,\r\n    \"order_by\": \"id:false\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/access_groups/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "access_groups",
                "search"
              ]
            },
            "description": "This API is used to see all Access Groups. It provides more concise response rather than the previous (`GET /api/access_groups`) and parameters to filter the response.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| limit | Number | Y | To limit result by n record(s), 0 to show all |\n| order_by | String | Y | To order result(s) by `name` or `id` (false is for ascending and true for descending) |\n\n#### Known errors:\n\n- Empty body\n    \n- Input other than number on limit parameter\n    \n- Input without key:value pair (name:val or id:val) on order_by parameter"
          },
          "response": [
            {
              "name": "List All Access Group v2",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"limit\": 0,\r\n    \"order_by\": \"id:false\"\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/access_groups/search/",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "access_groups",
                    "search",
                    ""
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Transfer-Encoding",
                  "value": "chunked"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 07:34:24 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"AccessGroupCollection\": {\n        \"total\": 12,\n        \"rows\": [\n            {\n                \"id\": 1,\n                \"name\": \"Adminstrative\",\n                \"users\": [\n                    {\n                        \"user_id\": \"2\",\n                        \"name\": \"RB\"\n                    },\n                    {\n                        \"user_id\": \"3\",\n                        \"name\": \"AM\"\n                    },\n                    {\n                        \"user_id\": \"61000\",\n                        \"name\": \"JJ\"\n                    }\n                ],\n                \"user_groups\": [\n                    {\n                        \"id\": 1005,\n                        \"name\": \"Administrative\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": 1,\n                        \"name\": \"Administrative Employee\"\n                    }\n                ],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 2,\n                \"name\": \"Executive\",\n                \"users\": [\n                    {\n                        \"user_id\": \"60014\",\n                        \"name\": \"Sib Steketee\"\n                    },\n                    {\n                        \"user_id\": \"61000\",\n                        \"name\": \"JJ\"\n                    }\n                ],\n                \"user_groups\": [\n                    {\n                        \"id\": 1004,\n                        \"name\": \"Executive\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": 2,\n                        \"name\": \"Executive\"\n                    }\n                ],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 3,\n                \"name\": \"First Shift\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 1006,\n                        \"name\": \"First Shift\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": 6,\n                        \"name\": \"1st Shift\"\n                    }\n                ],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 4,\n                \"name\": \"IT\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 1015,\n                        \"name\": \"IT\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": 1,\n                        \"name\": \"Administrative Employee\"\n                    },\n                    {\n                        \"id\": 4,\n                        \"name\": \"IT Closets\"\n                    }\n                ],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 5,\n                \"name\": \"Second Shift\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 1007,\n                        \"name\": \"Second Shift\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": 7,\n                        \"name\": \"2nd Shift\"\n                    }\n                ],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 6,\n                \"name\": \"Security\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 1014,\n                        \"name\": \"Security\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": 3,\n                        \"name\": \"All Access\"\n                    }\n                ],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 7,\n                \"name\": \"Shipping\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 1010,\n                        \"name\": \"Shipping\"\n                    }\n                ],\n                \"access_levels\": [],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 8,\n                \"name\": \"Stock\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 1009,\n                        \"name\": \"Stock\"\n                    }\n                ],\n                \"access_levels\": [],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 9,\n                \"name\": \"Supervisor\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 1011,\n                        \"name\": \"Supervisor\"\n                    }\n                ],\n                \"access_levels\": [],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 10,\n                \"name\": \"Third Shift\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 1008,\n                        \"name\": \"Third Shift\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": 8,\n                        \"name\": \"3rd Shift\"\n                    }\n                ],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 11,\n                \"name\": \"RnD\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 2018,\n                        \"name\": \"RnD\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": 5,\n                        \"name\": \"RnD\"\n                    }\n                ],\n                \"floor_levels\": []\n            },\n            {\n                \"id\": 12,\n                \"name\": \"Test1\",\n                \"users\": [],\n                \"user_groups\": [\n                    {\n                        \"id\": 1005,\n                        \"name\": \"Administrative\"\n                    }\n                ],\n                \"access_levels\": [\n                    {\n                        \"id\": 3,\n                        \"name\": \"All Access\"\n                    }\n                ],\n                \"floor_levels\": [\n                    {\n                        \"id\": 32769,\n                        \"name\": \"FL1\"\n                    }\n                ]\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\"\n    }\n}"
            }
          ]
        },
        {
          "name": "View an Access Group",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/access_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "1",
                  "description": "ID of the Access Group which will be viewed"
                }
              ]
            },
            "description": "To view an Access Group with id {id} or :id  \n{id} or :id are markers for replacing with the required value.\n\n#### Known errors:\n\n- Using id which doesn't exist\n    \n- Using value other than number\n    \n- Placing \"/\" at the end of the endpoint"
          },
          "response": [
            {
              "name": "View One AG",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/access_groups/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "access_groups",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "1",
                      "description": "ID of the Access Group which will be viewed"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "584"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 07:44:02 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"AccessGroup\": {\n        \"id\": \"1\",\n        \"name\": \"Adminstrative\",\n        \"description\": \"\",\n        \"users\": [\n            {\n                \"name\": \"RB\",\n                \"user_id\": \"2\"\n            },\n            {\n                \"name\": \"AM\",\n                \"user_id\": \"3\"\n            },\n            {\n                \"name\": \"JJ\",\n                \"user_id\": \"61000\"\n            }\n        ],\n        \"user_count\": \"3\",\n        \"user_groups\": [\n            {\n                \"id\": \"1005\",\n                \"name\": \"Administrative\",\n                \"description\": \"\",\n                \"parent_id\": {\n                    \"id\": \"1\",\n                    \"name\": \"All Users\"\n                },\n                \"depth\": \"1\",\n                \"inherited\": \"true\",\n                \"face_count\": \"0\",\n                \"user_count\": \"0\"\n            }\n        ],\n        \"access_levels\": [\n            {\n                \"id\": \"1\",\n                \"name\": \"Administrative Employee\",\n                \"description\": \"Access level for Administrative Employee\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            },
            {
              "name": "View One AG (With Floor Levels)",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/access_groups/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "access_groups",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "12",
                      "description": "ID of the Access Group which will be viewed"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "515"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 07:43:12 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"AccessGroup\": {\n        \"id\": \"12\",\n        \"name\": \"Test1\",\n        \"description\": \"\",\n        \"user_count\": \"0\",\n        \"user_groups\": [\n            {\n                \"id\": \"1005\",\n                \"name\": \"Administrative\",\n                \"description\": \"\",\n                \"parent_id\": {\n                    \"id\": \"1\",\n                    \"name\": \"All Users\"\n                },\n                \"depth\": \"1\",\n                \"inherited\": \"true\",\n                \"face_count\": \"0\",\n                \"user_count\": \"0\"\n            }\n        ],\n        \"access_levels\": [\n            {\n                \"id\": \"3\",\n                \"name\": \"All Access\",\n                \"description\": \"Access level for All Access\"\n            }\n        ],\n        \"floor_levels\": [\n            {\n                \"id\": \"32769\",\n                \"name\": \"FL1\",\n                \"description\": \"\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        },
        {
          "name": "View List of Users from an Access Group",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/access_groups/:id/users",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_groups",
                ":id",
                "users"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "1",
                  "description": "ID of the Access Group which will be viewed"
                }
              ]
            },
            "description": "To view user information only from AG with id {id}\n\n#### Known errors:\n\n- Using id which doesn't exist will return success but show no record\n    \n- Using value other than number\n    \n- Placing \"/\" at the end of the endpoint"
          },
          "response": [
            {
              "name": "View List of Users from an Access Group",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/access_groups/:id/users",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "access_groups",
                    ":id",
                    "users"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "1",
                      "description": "ID of the Access Group which will be viewed"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "235"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 07:47:24 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"UserCollection\": {\n        \"total\": \"3\",\n        \"rows\": [\n            {\n                \"user_id\": \"2\",\n                \"name\": \"RB\"\n            },\n            {\n                \"user_id\": \"3\",\n                \"name\": \"AM\"\n            },\n            {\n                \"user_id\": \"61000\",\n                \"name\": \"JJ\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        },
        {
          "name": "Update an Access Group",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"AccessGroup\": {\r\n        \"name\": \"Meeting Room Name\",\r\n        \"description\": \"MR Description\",\r\n        \"access_levels\": [\r\n            {\r\n                \"id\": 1\r\n            }\r\n        ],\r\n        \"user_groups\": [\r\n            {\r\n                \"id\": 1\r\n            }\r\n        ],\r\n        \"users\": [\r\n            {\r\n                \"user_id\": 17\r\n            },\r\n            {\r\n                \"user_id\": 9932\r\n            },\r\n            {\r\n                \"user_id\": 2\r\n            }\r\n        ],\r\n        \"new_users\": [\r\n            {\r\n                \"user_id\": 1\r\n            }\r\n        ],\r\n        \"delete_users\": [\r\n            {\r\n                \"user_id\": 17\r\n            },\r\n            {\r\n                \"user_id\": 9932\r\n            },\r\n            {\r\n                \"user_id\": 2\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/access_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "1",
                  "description": "ID of the Access Group which will be updated"
                }
              ]
            },
            "description": "This endpoint is used to replace Access Group with id `{id}/:id values` with the one specified by parameters below:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | The name of the AG. Must be unique |\n| description | String | N | AG's description |\n| user_groups | Array | N | List of user group(s) id of the AG.  <br>To add or delete User Groups, put new ones in this field or remove what you want to delete from the field. |\n| access_levels | Array | N | List of access level(s) id of the AG |\n| floor_levels | Array | N | List of floor level(s) id of the AG |\n| new_users | Array | N | List of user(s) id which will be added to the AG |\n| delete_users | Array | N | List of user(s) id which will be deleted from the AG |\n\n#### Notes:\n\n- To add/delete multiple, repeat the braces (see users example)\n    \n- When you add/update data, it will remove any previous data and add the one that you input.  \n    Ex: If parameter description have value, and on update this parameter value is left empty, then the previous value will be removed.\n    \n- To skip a record from updating, either skip the parameter or fill the current data on the update field.\n    \n- When updating an AG, parameter `user_group` need to be filled if existing User Group want to be retained. If this parameter is left empty, the existing User Group(s) in the AG that should be still there will not be there.\n    \n\n#### Known Errors:\n\n- Repeating the same value on parameter with multiple options"
          },
          "response": [
            {
              "name": "Update an AG",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"AccessGroup\": {\r\n        \"name\": \"Meeting Room Name\",\r\n        \"description\": \"MR Description\",\r\n        \"access_levels\": [\r\n            {\r\n                \"id\": 1\r\n            }\r\n        ],\r\n        \"user_groups\": [\r\n            {\r\n                \"id\": 1\r\n            }\r\n        ],\r\n        \"users\": [\r\n            {\r\n                \"user_id\": 17\r\n            },\r\n            {\r\n                \"user_id\": 9932\r\n            },\r\n            {\r\n                \"user_id\": 2\r\n            }\r\n        ],\r\n        \"new_users\": [\r\n            {\r\n                \"user_id\": 1\r\n            }\r\n        ],\r\n        \"delete_users\": [\r\n            {\r\n                \"user_id\": 17\r\n            },\r\n            {\r\n                \"user_id\": 9932\r\n            },\r\n            {\r\n                \"user_id\": 2\r\n            }\r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/access_groups/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "access_groups",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "1",
                      "description": "ID of the Access Group which will be updated"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "Set-Cookie",
                  "value": "JSESSIONID=2FFEDBAE36C395555DECAFA23AA6205D; Path=/; Secure; HttpOnly"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "107"
                },
                {
                  "key": "Date",
                  "value": "Tue, 04 Feb 2025 08:02:39 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        },
        {
          "name": "Delete an Access Group",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/access_groups?id={{nuid}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_groups"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "{{nuid}}",
                  "description": "ID of the AG which will be deleted"
                }
              ]
            },
            "description": "To delete Access Group as specified by QUERY parameter **id** (?id=)  \n**id** is a required value.\n\nTo get an Access Group's id, you can use `GET /api/access_groups` to view all available Access Groups, alternatively you can also use `POST /api/v2/access_groups/search` for the same result.\n\n#### Known errors:\n\n- Using id which doesn't exist\n    \n- Using value other than number"
          },
          "response": [
            {
              "name": "Delete an Access Group",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/access_groups?id=2",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "access_groups"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "2",
                      "description": "ID of the AG which will be deleted"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "107"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 07:24:47 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        }
      ],
      "description": "This section contains all API related to Access Group (AG)",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "pm.test(\"Status code is 200\", function () {",
              "    pm.response.to.have.status(200);",
              "});"
            ]
          }
        }
      ]
    },
    {
      "name": "Access Level",
      "item": [
        {
          "name": "Create New AL",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"AccessLevel\": {\r\n        \"name\": \"Access Level Name\",\r\n        \"description\": \"Access Level Description\",\r\n        \"access_level_items\": [\r\n            {\r\n                \"doors\": [\r\n                    {\r\n                        \"id\": 75\r\n                    },\r\n                    {\r\n                        \"id\": 80\r\n                    }\r\n                ],\r\n                \"schedule_id\": {\r\n                    \"id\": \"1\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/access_levels",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_levels"
              ]
            },
            "description": "This request is used to make a new Access Level (AL)\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | The name of the AL. Must be unique |\n| description | String | N | AL's description |\n| access_level_items | Array | N | This array is linked to two instance, schedule_id and doors, each with key:value parameter pair of id:id_num. doors is also an array, so you can put multiple value here. |\n\n#### Known errors:\n\n- Placing \"/\" at the end of the endpoint\n    \n- `name` is a required and unique parameter\n    \n- Duplicate id on doors instance"
          },
          "response": []
        },
        {
          "name": "View All AL",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/access_levels?limit=50&offset=0&order_by=id:false",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_levels"
              ],
              "query": [
                {
                  "key": "filterObject",
                  "value": "",
                  "description": "?",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Limit response record(s) by the amount specified on this parameter. 0 for show all."
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Shift response record(s) by the amount specified on this parameter. default value = 0"
                },
                {
                  "key": "SelectAllYN",
                  "value": "true",
                  "description": "?",
                  "disabled": true
                },
                {
                  "key": "order_by",
                  "value": "id:false",
                  "description": "Order the response record(s) "
                },
                {
                  "key": "query",
                  "value": "",
                  "description": "?",
                  "type": "text",
                  "disabled": true
                },
                {
                  "key": "total",
                  "value": "",
                  "description": "?",
                  "type": "text",
                  "disabled": true
                }
              ]
            },
            "description": "This request is used to view all Access Level (AL)\n\nThe parameter type is QUERY.\n\n#### Known errors:\n\n- Duplicate id on doors instance"
          },
          "response": []
        },
        {
          "name": "Update an AL",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"AccessLevel\": {\r\n        \"name\": \"Test Update\",\r\n        \"description\": \"Update\",\r\n        \"access_level_items\": [\r\n            {\r\n                \"id\": \"126\",\r\n                \"doors\": [\r\n                    {\r\n                        \"id\": \"75\"\r\n                    },\r\n                    {\r\n                        \"id\": \"80\"\r\n                    }\r\n                ],\r\n                \"schedule_id\": {\r\n                    \"id\": \"1\"\r\n                }\r\n            },\r\n            {\r\n                \"id\": \"128\",\r\n                \"doors\": [\r\n                    {\r\n                        \"id\": \"75\"\r\n                    },\r\n                    {\r\n                        \"id\": 79\r\n                    }\r\n                ],\r\n                \"schedule_id\": {\r\n                    \"id\": \"2\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/access_levels/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_levels",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "41",
                  "description": "ID of the AL that will be updated"
                }
              ]
            },
            "description": "This request is used to update an Access Level (AL)\n\n#### Known errors:\n\n- Placing \"/\" at the end of the endpoint\n    \n- `name` is a required and unique parameter\n    \n- Duplicate id on doors instance"
          },
          "response": []
        },
        {
          "name": "Delete an AL",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/access_levels/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "access_levels",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "12",
                  "description": "ID of the AL that will be deleted"
                }
              ]
            },
            "description": "This request is used to delete an existing Access Level (AL)\n\n#### Known errors:\n\n- Placing \"/\" at the end of the endpoint\n    \n- Value other than number on PATH variable\n    \n- Non-existent record id on PATH variable will return success but no action."
          },
          "response": []
        }
      ],
      "description": "This section contains all API related to Access Level (AL)",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "pm.test(\"Status code is 200\", function () {",
              "    pm.response.to.have.status(200);",
              "});"
            ]
          }
        }
      ]
    },
    {
      "name": "Backup",
      "item": [
        {
          "name": "View Backup Configuration",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v2/setting/getBackupDbConfig",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "setting",
                "getBackupDbConfig"
              ]
            },
            "description": "This API is used to view BioStar X Backup configuration."
          },
          "response": []
        },
        {
          "name": "Check Running Schedule",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v2/setting/checkBackupScheduler",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "setting",
                "checkBackupScheduler"
              ]
            },
            "description": "This API is used to check if there's any running backup process.\n\nMessage response will be True if there's any, and False if there's no running backup process."
          },
          "response": []
        },
        {
          "name": "Update Backup Configuration",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"use\": \"true\",\r\n    \"cycle\": \"10\",\r\n    \"path\": \"C:\\\\Backup\",\r\n    \"minute\": \"12\",\r\n    \"hour\": \"0\",\r\n    \"days\": \"*\",\r\n    \"month\": \"*\",\r\n    \"weeks\": \"?\",\r\n    \"userId\": \"1\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/setting/modifyBackupDbConfig",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "setting",
                "modifyBackupDbConfig"
              ]
            },
            "description": "This API is used to modify BioStar X backup configuration.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| use | String | Y | Toggle true to use Shceduled Backup |\n| cycle | String | Y | Number of backup files to keep (1 to 100) |\n| path | String | Y | Folder path, make sure that the folder exist |\n| minute | String | Y | Minute value for Scheduled Backup (0 to 59) |\n| hour | String | Y | Hour value for Scheduled Backup (0 to 23) |\n| days | String | Y | Date value for Scheduled Backup |\n| month | String | Y | Month value for Scheduled Backup. Leave it as \\* since currently it only support Daily and Weekly. |\n| weeks | String | Y | Day value for Scheduled Backup. Used when it's configured as Weekly Backup. (mon tue wed thu fri sat sun, default value is ?) |\n| userId | String | Y | UserId of the user who modify the configuration |"
          },
          "response": []
        },
        {
          "name": "Run Backup",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "bs-session-id",
                "value": "{{bsid}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"use\": \"false\",\r\n    \"cycle\": \"5\",\r\n    \"path\": \"C:\\\\Program Files\\\\BioStar 2(x64)\\\\Backup\",\r\n    \"minute\": \"0\",\r\n    \"hour\": \"0\",\r\n    \"days\": \"*\",\r\n    \"month\": \"*\",\r\n    \"weeks\": \"*\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/setting/backupNow",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "setting",
                "backupNow"
              ]
            },
            "description": "Triggers a manual (on-demand) system backup.\n\n- Pre-backup validation runs **synchronously**; the actual backup runs **asynchronously** after the response is returned.\n    \n- HTTP status is **always** **`200 OK`** — success, pre-checks, and validation failures are all signaled via the `Response.code` field in the body.\n    \n- The posted `path` must equal the value currently stored in `sysbackup.conf` (normalized compare) — arbitrary-path backups are blocked.\n    \n\nUse `GET /api/v2/setting/getBackupDbConfig` to retrieve the current backup config and echo its `path` value back in the request body.\n\n---\n\n## Request Headers\n\n| Header | Required | Purpose |\n| --- | --- | --- |\n| `bs-session-id` | yes | Resolved to user identity for audit logging |\n| `Content-Type` | yes | `application/json` |\n\n---\n\n## Request Body\n\nJSON `Backup` object. **Only** **`path`** **is consumed by this endpoint.** All other fields (`use`, `cycle`, `minute`, `hour`, `days`, `month`, `weeks`, etc.) are accepted for schema symmetry with the scheduled-backup config but are **ignored**.\n\n`path` is deployment-specific — it must equal the value in `{BIOSTAR_HOME}\\sysbackup.conf` after `Path.normalize()`. The example value below is illustrative; always read the current backup config first.\n\n``` json\n{\n  \"path\": \"<value from sysbackup.conf, e.g. C:\\\\BioStar\\\\backup>\"\n}\n\n```\n\nIf `sysbackup.conf` is missing or unreadable, every call fails with `code: \"2017\"`.\n\n---\n\n## Response Envelope\n\nAll responses use the `BackupResponse` wrapper. The `Backup` block is **always all-null** on this endpoint — only the `Response` block carries meaningful data.\n\n``` json\n{\n  \"Backup\": {\n    \"userId\": null, \"use\": null, \"cycle\": null, \"day\": null,\n    \"weekday\": null, \"time\": null, \"path\": null, \"overwritable\": null,\n    \"minute\": null, \"hour\": null, \"days\": null, \"month\": null,\n    \"weeks\": null, \"lastBackup\": null, \"biostarVersion\": null\n  },\n  \"Response\": {\n    \"code\": \"<string>\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"<string>\",\n    \"by\": \"web\"\n  }\n}\n\n```\n\n---\n\n## Response Codes\n\n| `Response.code` | HTTP Status | Trigger | `Response.message` |\n| --- | --- | --- | --- |\n| `0` | 200 | Validation passed; backup started asynchronously | `success` |\n| `2017` | 200 | A backup is already running, or posted `path` does not match configured backup path | `Backup is already running` / `Only local server path can be configured` |\n| `71000` | 200 | `BACKUP_VALIDATION_FAILED` — one or more pre-backup checks failed | `;`\\-joined, distinct i18n message keys (see Validation Message Keys below) |\n\n### Success example\n\n``` json\n{\n  \"Backup\": { \"...\": \"all null\" },\n  \"Response\": {\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"success\",\n    \"by\": \"web\"\n  }\n}\n\n```\n\n### Validation failure example (`code: \"71000\"`)\n\n``` json\n{\n  \"Backup\": { \"...\": \"all null\" },\n  \"Response\": {\n    \"code\": \"71000\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"setting.backup.validation.encryptionKeyNotFound; setting.backup.validation.backupNotWritable\",\n    \"by\": \"web\"\n  }\n}\n\n```\n\n---\n\n## Pre-backup Validation Checks\n\n`BackupValidationServiceImpl.validateBeforeBackup()` runs the following checks in order. All checks are collected (does **not** short-circuit); failures are joined into `Response.message`.\n\n| # | Check | Inputs |\n| --- | --- | --- |\n| 1 | Install location (`BIOSTAR_HOME`) resolvable | `ConfigUtils.getHomePath()` |\n| 2a | `enc_key_dir` is not a filesystem root | `system.conf → BioStar.enc_key_dir` |\n| 2b | `enckey` file exists and is readable | `{enc_key_dir}/enckey` |\n| 2c | Required companion files exist and are readable | `{enc_key_dir}/` |\n| 3 | `{BIOSTAR_HOME}/util` exists and is readable | `BIOSTAR_HOME` |\n| 4 | Image-log directory exists and is readable | `system.conf → img_log_dir` (defaults to `{BIOSTAR_HOME}/imagelog`) |\n| 5a | Backup path configured in `sysbackup.conf` | Backup config |\n| 5b | Backup directory exists | `sysbackup.conf → path` |\n| 5c | Backup directory is writable (temp-file probe) | `sysbackup.conf → path` |\n| 6 | Server IP configured (`server_addr` or `ssl_addr`) | `system.conf` / `setting.conf` |\n| 7 | Service-token dir resolvable, exists, readable; `service_token` file present and readable | `system-device-server.conf` |\n| 8 | `{BIOSTAR_HOME}/nginx/conf` exists and is readable | filesystem |\n| 9 | `{BIOSTAR_HOME}/nginx/html/upload` exists and is readable | filesystem |\n| 10 | `{BIOSTAR_HOME}/cert` exists and is readable | filesystem |\n\n---\n\n## Validation Message Keys (`code: 71000`)\n\n`Response.message` is a `\"; \"`\\-separated list of distinct i18n keys, one per failed check.\n\n| messageKey | Cause |\n| --- | --- |\n| `setting.backup.validation.configurationCouldNotLoaded` | `system.conf` / `setting.conf` could not be loaded or parsed |\n| `setting.backup.validation.locationNotfound` | `BIOSTAR_HOME` not set |\n| `setting.backup.validation.encryptionKeyDirIsDriveRoot` | `enc_key_dir` resolves to a filesystem root (e.g. `C:\\`) |\n| `setting.backup.validation.encryptionKeyNotFound` | `enckey` or required companion file missing |\n| `setting.backup.validation.encryptionKeyNotReadable` | `enckey` or required companion file not readable |\n| `setting.backup.validation.utilDirNotFound` | `{BIOSTAR_HOME}/util` missing |\n| `setting.backup.validation.utilDirNotReadable` | `{BIOSTAR_HOME}/util` not readable |\n| `setting.backup.validation.imageLogNotFound` | Image-log directory missing |\n| `setting.backup.validation.imageLogNotReadable` | Image-log directory not readable |\n| `setting.backup.validation.backupNotAvailable` | `sysbackup.conf` not available |\n| `setting.backup.validation.backupSysbackConf` | Backup path blank in `sysbackup.conf` |\n| `setting.backup.validation.backupNotFound` | Configured backup directory does not exist |\n| `setting.backup.validation.backupNotWritable` | Backup directory exists but is not writable |\n| `setting.backup.validation.serverIpNotConfigured` | Neither `system.conf:server_addr` nor `setting.conf:https.ssl_addr` is set |\n| `setting.backup.validation.serviceToken` | Install location unavailable when resolving service-token dir |\n| `setting.backup.validation.deviceServerConfiguration` | `system-device-server.conf` missing |\n| `setting.backup.validation.parseDeviceServer` | `system-device-server.conf` failed to parse as JSON |\n| `setting.backup.validation.systemDeviceServerConf` | `BioStar.service_token_dir` not set in `system-device-server.conf` |\n| `setting.backup.validation.serviceTokenMissing` | Service-token directory or `service_token` file missing/unreadable |\n| `setting.backup.validation.fileFolderRequired` | `{install}/nginx/conf`, `{install}/nginx/html/upload`, or `{install}/cert` missing/unreadable |\n\n---\n\n## Side Effects on Validation Failure\n\n- Error logged: `logger.error(validationResult.getDetailedLog())`\n    \n- Audit log entry written: `Backup Failed` (attributed to the calling user and remote address)\n    \n- Backup-failed event fired: `backupAlertService.sendBackupFailedEventOnly()`\n    \n\nNote: `remoteAddress` is resolved via `remoteAccessService.resolveClientIpAddress(request)`, so Remote Access (ngrok-tunneled) callers are correctly attributed.\n\n#### Changes:\n\n- v1.0.2:\n    \n    - Async backup behavior and synchronous pre-validation\n        \n    - HTTP-always-200 with `Response.code` as the real signal\n        \n    - `path` constraint (must match `sysbackup.conf` after normalization)\n        \n    - Response envelope structure (Backup block always null, Response block carries data)\n        \n    - Response codes table (`0`, `2017`, `71000`) with success and failure examples\n        \n    - Full pre-backup validation checks table (10 check categories)\n        \n    - All 20 validation message keys with causes\n        \n    - Side effects on failure (error log, audit log, backup-failed event)"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Cards",
      "item": [
        {
          "name": "Update Wiegand Formats",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"WiegandFormat\": {\r\n        \"id\": \"5\",\r\n        \"name\": \"Test\",\r\n        \"description\": \"Test Desc\",\r\n        \"length\": \"32\",\r\n        \"use_facility_code\": \"true\",\r\n        \"id_fields\": [\r\n            \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAA=\",\r\n            \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///4=\"\r\n        ],\r\n        \"parity_fields\": [\r\n            \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAA=\",\r\n            \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=\"\r\n        ],\r\n        \"parity_types\": [\r\n            \"1\",\r\n            \"2\"\r\n        ],\r\n        \"parity_positions\": [\r\n            \"0\",\r\n            \"31\"\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards/wiegand_formats/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "wiegand_formats",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the wiegand format which will be updated."
                }
              ]
            },
            "description": "It is possible to use a custom wiegand format.\n\nTo create a custom format, you can edit the provided formats which is between id number 5 to 14.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | N | ID of the wiegand format. |\n| name | String | N | Name of the wiegand format. |\n| description | String | N | Description of the wiegand format. |\n| use_facility_code | Boolean | N | Toggle to use facility code. |\n| length | Number | N | Total bits of the card. |\n| id_fields |  | N | Encoded input of the ID bits. Facility code will also be placed here.  <br>Use comma as separator. |\n| parity_fields |  | N | Encoded input of the parity bits. |\n| parity_types | Number | N | 1=Odd, 2=Even |\n| parity_positions | Number | N | Position of the parity bits. Put it on the same sequence as parity_types. |"
          },
          "response": []
        },
        {
          "name": "Delete Smart Card Layout",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/layouts?id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "layouts"
              ],
              "query": [
                {
                  "key": "id",
                  "value": null
                }
              ]
            },
            "description": "This API is used to delete smart card layout from BioStar X."
          },
          "response": []
        },
        {
          "name": "View All Card Types",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/types",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "types"
              ]
            },
            "description": "This API is used to view all available card types."
          },
          "response": []
        },
        {
          "name": "Check Card Availability",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v2/cards/registered?card_id=123",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "cards",
                "registered"
              ],
              "query": [
                {
                  "key": "card_id",
                  "value": "123",
                  "description": "ID of the card which will be checked."
                }
              ]
            },
            "description": "This API is used to check whether a card already posted on the system or not.\n\nIf card already posted, then it will show the card's detail on the response."
          },
          "response": []
        },
        {
          "name": "List All Cards",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards?limit=50&offset=0&card_type=wiegand",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Limit the number of responses by n records. Remove this parameter to view all."
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Offset the response shown by n records."
                },
                {
                  "key": "card_type",
                  "value": "wiegand",
                  "description": "Filter the response by card type."
                }
              ]
            },
            "description": "This API is used to view all cards recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "View a Card Detail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards?query=1169166509350528",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards"
              ],
              "query": [
                {
                  "key": "query",
                  "value": "1169166509350528",
                  "description": "ID of the card which will be viewed"
                }
              ]
            },
            "description": "This API is used to find a card by card ID and find out who owns the card."
          },
          "response": []
        },
        {
          "name": "List Unassigned Cards",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/unassigned?card_type=csn&limit&offset&wiegand_format_id=4",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "unassigned"
              ],
              "query": [
                {
                  "key": "card_type",
                  "value": "csn",
                  "description": "Limit the response to show only the specified type of card. Use plus (+) sign as separator to filter by multiple types."
                },
                {
                  "key": "limit",
                  "value": null,
                  "description": "Limit the number of responses by n records. Remove this parameter to view all."
                },
                {
                  "key": "offset",
                  "value": null,
                  "description": "Offset the response shown by n records."
                },
                {
                  "key": "wiegand_format_id",
                  "value": "4",
                  "description": "Limit the response to show only the specified wiegand format. Remove this parameter to show all."
                }
              ]
            },
            "description": "This API is used to view all unassigned cards recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "List Assigned Cards",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/assigned?card_type=wiegand&offset=0&wiegand_format_id=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "assigned"
              ],
              "query": [
                {
                  "key": "card_type",
                  "value": "wiegand",
                  "description": "Limit the response to show only the specified type of card. Use plus (+) sign as separator to filter by multiple types."
                },
                {
                  "key": "limit",
                  "value": "",
                  "description": "Limit the number of responses by n records. Remove this parameter to view all.",
                  "disabled": true
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Offset the response shown by n records."
                },
                {
                  "key": "wiegand_format_id",
                  "value": "",
                  "description": "Limit the response to show only the specified wiegand format. Remove this parameter to show all."
                }
              ]
            },
            "description": "This API is used to view all assigned cards recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "List Blacklisted Cards",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/blacklist?limit=1000&offset=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "blacklist"
              ],
              "query": [
                {
                  "key": "card_type",
                  "value": "wiegand",
                  "description": "Limit the response to show only the specified type of card. Use plus (+) sign as separator to filter by multiple types.",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "1000",
                  "description": "Limit the number of responses by n records. Remove this parameter to view all."
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Offset the response shown by n records."
                },
                {
                  "key": "wiegand_format_id",
                  "value": "",
                  "description": "Limit the response to show only the specified wiegand format. Remove this parameter to show all.",
                  "disabled": true
                }
              ]
            },
            "description": "This API is used to view all blacklisted cards recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "Delete Blacklisted Card",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/blacklist?id=50",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "blacklist"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "50",
                  "description": "ID of the blacklisted card which will be removed from the list."
                }
              ]
            },
            "description": "This API is used to remove a blacklisted card from the list."
          },
          "response": []
        },
        {
          "name": "Blacklist Card",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Blacklist\": {\r\n        \"card_id\": {\r\n            \"id\": \"49\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards/blacklist",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "blacklist"
              ]
            },
            "description": "This API is used to add a card to blacklist.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the card which will be added to the blacklist. |"
          },
          "response": []
        },
        {
          "name": "View Wiegand Formats",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/wiegand_formats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "wiegand_formats"
              ]
            },
            "description": "This API is used to view all available wiegand format."
          },
          "response": []
        },
        {
          "name": "View Wiegand Format Detail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/wiegand_formats/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "wiegand_formats",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "1"
                }
              ]
            },
            "description": "This API is used to view a wiegand format detail."
          },
          "response": []
        },
        {
          "name": "View Smart Cards Layout",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/layouts?limit&offset",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "layouts"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": null,
                  "description": "Limit the number of responses by n records. Remove this parameter to view all.",
                  "type": "text"
                },
                {
                  "key": "offset",
                  "value": null,
                  "description": "Offset the response shown by n records.",
                  "type": "text"
                }
              ]
            },
            "description": "This API is used to view all available smart card layouts."
          },
          "response": []
        },
        {
          "name": "View a Smart Card Layout Details",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/cards/layouts/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "layouts",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "1",
                  "description": "ID of the card layout which will be viewed."
                }
              ]
            },
            "description": "This API is used to view a smart card layout details."
          },
          "response": []
        },
        {
          "name": "Create Smart Card Layout",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"CardLayout\": {\r\n        \"name\": \"smart_test\",\r\n        \"use_second_key\": \"false\",\r\n        \"number_of_template\": 2,\r\n        \"template_size\": 300,\r\n        \"mifare_primary_key\": \"\",\r\n        \"mifare_start_block_index\": \"4\",\r\n        \"mifare_second_key\": \"\",\r\n        \"iclass_primary_key\": \"\",\r\n        \"iclass_second_key\": \"\",\r\n        \"iclass_start_block_index\": \"13\",\r\n        \"desfire_primary_key\": \"\",\r\n        \"desfire_second_key\": \"\",\r\n        \"desfire_app_id\": 1,\r\n        \"desfire_file_id\": 1,\r\n        \"desfire_encryption_type\": 0,\r\n        \"desfire_advanced_mode\": 0,\r\n        \"des_adv_app_master_key_index\": \"0\",\r\n        \"des_adv_file_read_access_key_index\": \"1\",\r\n        \"des_adv_file_write_access_key_index\": \"2\",\r\n        \"seos_primary_key\": \"\",\r\n        \"seos_second_key\": \"\",\r\n        \"seos_adf\": \"2A8570811E1000070000020000\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards/layouts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "layouts"
              ]
            },
            "description": "This API is used to create smart card layout.\n\nFill the corresponding parameter with the card's specification.\n\nIf the card uses default configuration, then simply fill the name and run the API."
          },
          "response": []
        },
        {
          "name": "Create Card (CSN)",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "if (pm.iterationData.get(\"value\") === undefined) {\r",
                  "    pm.collectionVariables.set(\"iterIDVal\", '1234');\r",
                  "} else {\r",
                  "    val = pm.iterationData.get(\"value\");\r",
                  "    pm.collectionVariables.set(\"iterIDVal\", val);\r",
                  "}"
                ],
                "type": "text/javascript",
                "packages": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"CardCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"card_id\": \"{{iterIDVal}}\",\r\n                \"card_type\": {\r\n                    \"id\": \"0\",\r\n                    \"type\" : \"1\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards"
              ]
            },
            "description": "This API is used to add a card to BioStar X.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| card_type:id | Number | Y | Type card id of the card. See \"View All Card Types\" for all type of cards.  <br>0: CSN card  <br>1: Wiegand Card  <br>2: Secure Credential Card (Smart card)  <br>3: Access on Card (Smart card)  <br>4: Mobile CSN Card  <br>5: Wiegand Mobile  <br>6: QR/Barcode  <br>7: BioStar X QR |\n| card_type:type | Number | Y | Type allocation of the card type. View the list using `/api/cards/types` to determine the correct value. |\n| card_id | Number | Y | Input value shown/read when scanning the card. |\n\n#### **NOTE:**\n\n- This API will return error if the `card_id` is already exist on the database. Use \"Check Card Availability\" API to validate.\n    \n- This API will return an error when generating CSN Card with invalid card id.  \n    `Error Code: ACB_ERROR_CODE.415`  \n    Cases of invalid card id:\n    \n    - CSN with card id staring with 0\n        \n    - CSN with card id using letters\n        \n    - More than 32 characters"
          },
          "response": []
        },
        {
          "name": "Create Card (CSN Mobile)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"CardCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"isUserPhoto\": true,\r\n                \"isDepartment\": true,\r\n                \"isTitle\": true,\r\n                \"start_datetime\": \"2022-04-25T14:36:00.00Z\",\r\n                \"expiry_datetime\": \"2022-04-26T14:36:00.00Z\",\r\n                \"card_type\": {\r\n                    \"id\": \"4\",\r\n                    \"type\" : \"4\"\r\n                },\r\n                \"display_card_id\": \"16508685698911631\",\r\n                \"card_id\": \"16508685698911631\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards"
              ]
            },
            "description": "This API is used to add a card to BioStar X.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| card_type:id | Number | Y | Type card id of the card. See \"View All Card Types\" for all type of cards.  <br>0: CSN card  <br>1: Wiegand Card  <br>2: Secure Credential Card (Smart card)  <br>3: Access on Card (Smart card)  <br>4: Mobile CSN Card  <br>5: Wiegand Mobile  <br>6: QR/Barcode  <br>7: BioStar X QR |\n| card_type:type | Number | Y | Type allocation of the card type. View the list using /api/cards/types to determine the correct value. |\n| card_id | Number | Y | Input value recorded on the card. |\n| display_card_id | Number | N | Input value shown/read when scanning the card. |\n| isUserPhoto | Boolean | Y | Toggle true if the credential will be using the user photo (photo must exist) |\n| isDepartment | Boolean | Y | Toggle true if the credential will be using the user department (department field must be filled) |\n| isTitle | Boolean | Y | Toggle true if the credential will be using the user title (title field must be filled). |\n| start_datetime | Date | Y | Start datetime for the credential availability. |\n| expiry_datetime | Date | Y | End datetime for the credential availability. |\n\n#### NOTE:\n\n- This API will return error if the card_id is already exist on the database. Use \"Check Card Availability\" API to validate."
          },
          "response": []
        },
        {
          "name": "Create Card (Wiegand without Facility Code)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"CardCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"card_id\": \"1000002\",\r\n                \"card_type\": {\r\n                    \"id\": \"1\",\r\n                    \"type\" : \"10\"\r\n                },\r\n                \"wiegand_format_id\": {\r\n                    \"id\": \"1\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards"
              ]
            },
            "description": "For this example, there's no conversion required since the card id already have 35 bit value.\n\n19044429267 > Decimal  \n100 0110 1111 0010 0010 1110 1101 1101 0011 > Binary (35 Bits)\n\nJust make sure to use format id which doesn't use facility code.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| card_type:id | Number | Y | Type card id of the card. See \"View All Card Types\" for all type of cards.  <br>0: CSN card  <br>1: Wiegand Card  <br>2: Secure Credential Card (Smart card)  <br>3: Access on Card (Smart card)  <br>4: Mobile CSN Card  <br>5: Wiegand Mobile  <br>6: QR/Barcode  <br>7: BioStar X QR |\n| card_type:type | Number | Y | Type allocation of the card type. View the list using /api/cards/types to determine the correct value. |\n| card_id | Number | Y | Input value shown/read when scanning the card. |\n| wiegand_format_id:id | Number | Y | If card_type is wiegand, then fill this parameter:  <br>0: 26 bit format  <br>1: HID 37 bit-H10302  <br>2: HID 37 bit-H10304  <br>3: HID Corporate 1000 (35 bit)  <br>4: HID Corporate 1000 (48 bit)  <br>5\\~14: Custom formats. |\n\n#### NOTE:\n\n- This API will return error if the `card_id` is already exist on the database. Use \"Check Card Availability\" API to validate."
          },
          "response": []
        },
        {
          "name": "Create Card (Wiegand with Facility Code)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"CardCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"card_id\": \"23602938391607\",\r\n                \"card_type\": {\r\n                    \"id\": \"1\",\r\n                    \"type\" : \"10\"\r\n                },\r\n                \"wiegand_format_id\": {\r\n                    \"id\": \"4\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards"
              ]
            },
            "description": "To input card that is using facility code, there's conversion that needs to be done first.\n\nThe process is:\n\n1.  Get the Facility Code and Card ID\n2.  Convert it to Binary\n3.  Combine the binary value of the Facility Code and Card ID\n4.  Convert it to Decimal\n5.  Use the converted value on card_id parameter\n6.  Don't forget to select the corresponding wiegand_format_id\n    \n\n* * *\n\n**Conversion when The Card is Using Facility Code**\n\n* * *\n\n> E: Even  \n> O: Odd  \n> C: Facility Code  \n> D: ID\n\n**26 bit SIA Standard-H10301**  \nPosition: 0-25\n\n| Field | E | CCCCCCCC | DDDDDDDDDDDDDDDD | O |\n| --- | --- | --- | --- | --- |\n| Position | 0 | 1-8 | 9-24 | 25 |\n\nE&O : Not included on the calculation  \nBit : 8 bits + 16 bits  \nByte: 1 byte + 2 bytes  \nHexa: FF + FFFF\n\nExample:  \nFacility Code + Card ID  \n20 + 10000 > Decimal  \n14 + 2710 > Hex  \n14 2710 > Combined Hex (CH)  \n1320720 > Converted CH to Decimal. Use this as input\n\n**HID 37 bit-H10304**  \nPosition: 0-36\n\n| Field | E | CCCCCCCCCCCCCCCC | DDDDDDDDDDDDDDDDDDD | O |\n| --- | --- | --- | --- | --- |\n| Position | 0 | 1-16 | 17-35 | 36 |\n\nE&O : Not included on the calculation  \nBit : 16 bits + 19 bits\n\nExample:  \nFacility Code + Card ID  \n43962 + 123456 > Decimal  \n1010 1011 1011 1010 + 001 1110 0010 0100 0000 > Binary (16 + 19 bits)  \n1010 1011 1011 1010 0011 1100 0100 1000 000 > Combined Binary (CB)  \n23048872512 > Converted CB to Decimal. Use this as input\n\n**HID Corporate 1000**  \nPosition 0-34\n\n| Field | O | E | CCCCCCCCCCCCCCCC | DDDDDDDDDDDDDDDDDDD | O |\n| --- | --- | --- | --- | --- | --- |\n| Position | 0 | 1 | 2-13 | 14-33 | 34 |\n\nE&O : Not included on the calculation  \nBit : 12 bits + 20 bits\n\nExample:  \nFacility Code + Card ID  \n2543 + 1005255 > Decimal  \n1001 1110 1111 + 1111 0101 0110 1100 0111 > Binary (12 + 20 bits)  \n1001 1110 1111 1111 0101 0110 1100 0111 > Combined Binary (CB)  \n2667534023 > Converted CB to Decimal. Use this as input\n\n**HID Corporate 1000 (48bit)**  \nPosition 0-47\n\n| Field | O | E | CCCCCCCCCCCCCCCCCCCCCC | DDDDDDDDDDDDDDDDDDDDDDD | O |\n| --- | --- | --- | --- | --- | --- |\n| Position | 0 | 1 | 2-23 | 24-46 | 47 |\n\nE&O : Not included on the calculation  \nBit : 22 bits + 23 bits\n\nExample:  \nFacility Code + Card ID  \n2813689 + 4336695  \n10 1010 1110 1110 1111 1001 + 100 0010 0010 1100 0011 0111 > Binary  \n1010 1011 1011 1011 1110 0110 0001 0001 0110 0001 1011 1 > Combined Binary (CB)  \n23602938391607 > Converted CB to Decimal. Use this as input"
          },
          "response": []
        },
        {
          "name": "Create Card (Secure Credential)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"SmartCard\": {\r\n        \"user_id\": {\r\n            \"user_id\": \"8\",\r\n            \"fingerprint_templates\": [\r\n                {\r\n                    \"finger_index\": \"0\"\r\n                }\r\n            ],\r\n            \"visual_face_templates\": []\r\n        },\r\n        \"card_id\": {\r\n            \"card_id\": \"898\",\r\n            \"card_type_id\": {\r\n                \"id\": \"2\"\r\n            }\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/:dev_id/write_card",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":dev_id",
                "write_card"
              ],
              "variable": [
                {
                  "key": "dev_id",
                  "value": null,
                  "description": "Device ID with the corresponding layout set which will be used to write the card."
                }
              ]
            },
            "description": "This API is used to create a secure credential card.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_id | Number | Y | User ID of the user which will be using this card and which the biometric will be linked to. |\n| fingerprint_templates:finger_index | Number | N | Fingerprint template of the user. |\n| visual_face_templates | Number | N | Visual face template of the user. |\n| card_id | Number | Y | Card ID which will be displayed and used as record's key. |\n| card_type_id:id | Number | Y | Type of the card which will be created. |"
          },
          "response": []
        },
        {
          "name": "Create Card (Access on Card)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"SmartCard\": {\r\n        \"user_id\": {\r\n            \"user_id\": \"8\",\r\n            \"fingerprint_templates\": [\r\n                {\r\n                    \"finger_index\": \"0\"\r\n                }\r\n            ],\r\n            \"visual_face_templates\": []\r\n        },\r\n        \"card_id\": {\r\n            \"card_id\": \"8\",\r\n            \"card_type_id\": {\r\n                \"id\": \"3\"\r\n            },\r\n            \"use_alphanumeric_user_id\": \"false\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/:dev_id/write_card",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":dev_id",
                "write_card"
              ],
              "variable": [
                {
                  "key": "dev_id",
                  "value": null,
                  "description": "Device ID with the corresponding layout set which will be used to write the card."
                }
              ]
            },
            "description": "This example shows how to create Access on Card.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_id | Number | Y | User ID of the user which will be using this card and which the biometric will be linked to. |\n| fingerprint_templates:finger_index | Number | N | Fingerprint template of the user. |\n| visual_face_templates | Number | N | Visual face template of the user. |\n| card_id | Number | Y | Card ID which will be displayed and recorded on the system. Use the same number as user_id. |\n| card_type_id:id | Number | Y | Type of the card which will be created. |\n| use_alphanumeric_user_id | Boolean | Y | Toggle true if user_id uses alphanumeric setting. |"
          },
          "response": []
        },
        {
          "name": "Create QR/Barcode",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"CardCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"card_id\": \"1000002\",\r\n                \"card_type\": {\r\n                    \"id\": \"6\",\r\n                    \"type\" : \"6\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards"
              ]
            },
            "description": "This API is used to add a QR/Barcode to BioStar X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| card_type:id | Number | Y | Type card id of the card. See \"View All Card Types\" for all type of cards.  <br>0: CSN card  <br>1: Wiegand Card  <br>2: Secure Credential Card (Smart card)  <br>3: Access on Card (Smart card)  <br>4: Mobile CSN Card  <br>5: Wiegand Mobile  <br>6: QR/Barcode  <br>7: BioStar X QR |\n| card_type:type | Number | Y | Type allocation of the card type. View the list using `/api/cards/types` to determine the correct value. |\n| card_id | Number | Y | Input value shown/read when scanning the card. |\n\n#### NOTES:\n\n- This API will return error if the card_id is already exist on the database. Use \"Check Card Availability\" API to validate.\n    \n- When using `card_type` with ID `6` (QR), the `card_id` value must not exceed 32 characters."
          },
          "response": []
        },
        {
          "name": "Create BioStar X QR",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"CardCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"card_type\": {\r\n                    \"id\": \"7\",\r\n                    \"type\": \"7\"\r\n                },\r\n                \"display_card_id\": \"27744052605381570\",\r\n                \"card_id\": \"27744052605381570\",\r\n                \"user_id\": {\r\n                    \"user_id\": \"13\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards"
              ]
            },
            "description": "This API is used to create BioStar X QR.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| card_type:id | Number | Y | Type card id of the card. See \"View All Card Types\" for all type of cards.  <br>0: CSN card  <br>1: Wiegand Card  <br>2: Secure Credential Card (Smart card)  <br>3: Access on Card (Smart card)  <br>4: Mobile CSN Card  <br>5: Wiegand Mobile  <br>6: QR/Barcode  <br>7: BioStar X QR |\n| card_type:type | Number | Y | Type allocation of the card type. View the list using `/api/cards/types` to determine the correct value. |\n| card_id | Number | Y | Input value shown/read when scanning the card. |\n| user_id | String | Y | ID of the user which the QR will be assigned to. |\n\n#### NOTE:\n\n- This API will return error if the card_id is already exist on the database. Use \"Check Card Availability\" API to validate."
          },
          "response": []
        },
        {
          "name": "Create Mobile Card",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"SmartCard\": {\r\n        \"user_id\": {\r\n            \"user_id\": \"1\",\r\n            \"fingerprint_templates\": [\r\n                {\r\n                    \"finger_index\": \"0\"\r\n                }\r\n            ]\r\n        },\r\n        \"card_id\": {\r\n            \"card_id\": \"102\",\r\n            \"card_type_id\": {\r\n                \"id\": \"2\"\r\n            }\r\n        },\r\n        \"card_layout_id\": {\r\n            \"id\": \"4\"\r\n        },\r\n        \"options\": {\r\n            \"is_a_mobile_credential\": true\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/cards/mobile_credentials",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "cards",
                "mobile_credentials"
              ]
            },
            "description": "This example shows how to create Mobile Card.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_id | Number | Y | User ID of the user which will be using this card and which the biometric will be linked to. |\n| fingerprint_templates:finger_index | Number | N | Fingerprint template of the user. |\n| card_id | Number | Y | Card ID which will be displayed and recorded on the system. Use the same number as user_id. |\n| card_type_id:id | Number | Y | Type of the card which will be created. |\n| card_layout_id:id | Number | Y | Layout ID for Mobile Credential which have been created. |\n| options:is_a_mobile_credential | Boolean | Y | Toggle true if the card is Mobile Credential. |"
          },
          "response": []
        },
        {
          "name": "Format Smart Card",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:dev_id/erase_card",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":dev_id",
                "erase_card"
              ],
              "variable": [
                {
                  "key": "dev_id",
                  "value": null,
                  "description": "Device ID with the corresponding layout set which will be used to write the card."
                }
              ]
            },
            "description": "This API is used to remove the written smart card data from a Smart Card."
          },
          "response": []
        },
        {
          "name": "Send BioStar X QR by Email",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"id\": \"1\",\r\n    \"language\": \"en\",\r\n    \"card_collection\": [\r\n        {\r\n            \"id\": \"10072\",\r\n            \"card_id\": \"3045804110617690774352189081668890\",\r\n            \"display_card_id\": \"165113371684849\",\r\n            \"card_type\": {\r\n                \"id\": \"7\",\r\n                \"name\": \"SCQr\",\r\n                \"type\": \"7\"\r\n            }\r\n        }\r\n    ],\r\n    \"total\": 1\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/send_email_qr",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "send_email_qr"
              ]
            },
            "description": "This API is used to send BioStar X QR by email.\n\nBefore using this API, make sure that:\n\n- SMTP is set\n    \n- User email field is filled\n    \n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the user which the QR code applied to and the email will be sent to. |\n| language | String | Y | ko=Korean, en=English |\n| card_collection:id | Number | Y | ID of the QR which will be sent to the user email. |\n| card_collection:card_id | Number | Y | ID of the card as recorded on BioStar X database. |\n| card_collection:display_card_id | Number | Y | ID which will be shown when scanning/reading the card. |\n| card_type:id | Number | Y | ID for the card type. |\n| card_type:name | String | Y | Name of the card type. |\n| card_type:type | Number | Y | Type code of the card type. |\n| total | Number | Y | Total of the card. |"
          },
          "response": []
        },
        {
          "name": "Send Visual Face by Email",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"id\": \"1\",\r\n    \"language\": \"en\",\r\n    \"adv_criteria\": {\r\n        \"user_name\": \"e\",\r\n        \"user_operator_level_id\": \"0\",\r\n        \"user_group_id\": 1,\r\n        \"user_group_ids\": [],\r\n        \"user_custom_field_1\": null,\r\n        \"user_custom_field_2\": null,\r\n        \"user_custom_field_3\": null,\r\n        \"user_custom_field_4\": null,\r\n        \"user_custom_field_5\": null,\r\n        \"user_custom_field_6\": null,\r\n        \"user_custom_field_7\": null,\r\n        \"user_custom_field_8\": null,\r\n        \"user_custom_field_9\": null,\r\n        \"user_custom_field_10\": null\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/send_email",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "send_email"
              ]
            },
            "description": "This API is used to send Visual Face mobile enrollment link.\n\n#### Body Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | String | Y | User ID |\n| language | String | Y | Language which will be used.  <br>ko : Korean  <br>en : English  <br>ja : Japanese |\n| adv_criteria | Object | Y | See Batch Edit with Advanced Search for adv_criteria details. |"
          },
          "response": []
        }
      ]
    },
    {
      "name": "User Groups",
      "item": [
        {
          "name": "List UG",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/user_groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "user_groups"
              ]
            },
            "description": "This API is used to list all User Groups."
          },
          "response": []
        },
        {
          "name": "List UG by Id",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"user_group_id_list\": [\r\n        \"1004\",\r\n        \"21109\"\r\n    ]\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/user_groups/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "user_groups",
                "search"
              ]
            },
            "description": "This API is used to list User Group(s) which specified on the Body parameter.\n\n#### Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_group_id_list | Array | N | Specify User Group ids which will be viewed. Use comma (,) as separator. |"
          },
          "response": []
        },
        {
          "name": "Create UG",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"UserGroup\": {\r\n        \"parent_id\": {\r\n            \"id\": 1\r\n        },\r\n        \"depth\": 1,\r\n        \"name\": \"TestDataXFer3\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/user_groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "user_groups"
              ]
            },
            "description": "This API is used to create a new User Group.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| parent_id:id | Number | Y | Parent ID of the new User Group. |\n| depth | Number | N | Depth of the User Group based on the parent. |\n| name | String | Y | Name of the User Group. |\n\n- User groups may be created in up to 8 levels.\n    \n- Up to 48 characters may be entered for a user group name."
          },
          "response": []
        },
        {
          "name": "Update UG",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"UserGroup\": {\r\n        \"name\": \"TestDataXFer3xx\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/user_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "user_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "21436",
                  "description": "Id of the User Group which will be updated."
                }
              ]
            },
            "description": "This API is used to update a User Group.\n\n#### BODY Parameter:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| UserGroup:name | String | Y | Specify new name of the User Group. |"
          },
          "response": []
        },
        {
          "name": "Delete UG",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/user_groups?id=21436",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "user_groups"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "21436",
                  "description": "Id of the User Group which will be deleted."
                }
              ]
            },
            "description": "This API is used to delete a User Group."
          },
          "response": []
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "User",
      "item": [
        {
          "name": "Find Next Available UserID",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const jsonData = pm.response.json();\r",
                  "pm.collectionVariables.set(\"nuid\", jsonData.User.user_id);"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/users/next_user_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "next_user_id"
              ]
            },
            "description": "This API returns the next available user ID based on the currently assigned user IDs. If user IDs are numeric, the response will be the next sequential number. If alphanumeric user IDs are enabled, the API will only consider numeric user IDs and return the next available numeric value.\n\n- If the currently used user IDs are 1, 2, 3, the API response will be 4.\n    \n- If user ID type is configured to **alphanumeric**, but existing IDs are 1, 2, 3, x4, 4x, the response will still be 4 (since \"x4\" and \"4x\" are ignored).\n    \n\n#### Notes:\n\n- The API automatically filters out non-numeric user IDs when alphanumeric mode is enabled.\n    \n- This does not create a new user ID, only suggests the next available one.\n    \n\n#### Response Properties:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| User.user_id | String | The next available user ID. |"
          },
          "response": [
            {
              "name": "Find Next Available UserID",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/users/next_user_id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "users",
                    "next_user_id"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "JSON",
              "header": [
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json;charset=UTF-8"
                },
                {
                  "key": "Transfer-Encoding",
                  "value": "chunked"
                },
                {
                  "key": "Date",
                  "value": "Tue, 04 Feb 2025 06:09:29 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\r\n  \"User\" : {\r\n    \"user_id\" : \"404\"\r\n  },\r\n  \"Response\" : {\r\n    \"code\" : \"0\"\r\n  }\r\n}"
            }
          ]
        },
        {
          "name": "Create New User",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "const postRequest = {\r",
                  "  url: pm.collectionVariables.get('baseUrl')+\"/api/users/next_user_id\",\r",
                  "  method: 'GET',\r",
                  "  header: {\r",
                  "    'bs-session-id': pm.collectionVariables.get('bsid')\r",
                  "  },\r",
                  "};\r",
                  "\r",
                  "pm.sendRequest(postRequest, (error, res) => {\r",
                  "  console.log(error ? error : res.json());\r",
                  "  const jsonData = res.json();\r",
                  "  pm.collectionVariables.set(\"nuid\", jsonData.User.user_id);\r",
                  "});"
                ],
                "type": "text/javascript"
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  "//Loop Request nLoop times\r",
                  "/*\r",
                  "pm.environment.set(\"nLoop\", 10);\r",
                  "var currentCount = pm.environment.get(\"nLoop\")\r",
                  "if (currentCount > 0){\r",
                  " currentCount = currentCount -1 ;\r",
                  " pm.environment.set(\"nLoop\", currentCount);\r",
                  " postman.setNextRequest(\"Create New User\");\r",
                  "}*/\r",
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"user_id\": \"{{nuid}}\",\r\n        \"user_group_id\": {\r\n            \"id\": \"1\"\r\n        },\r\n        \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n        \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n        \"disabled\": \"\",\r\n        \"name\": \"{{nuid}}{{$randomFirstName}}\",\r\n        \"email\": \"{{nuid}}{{$randomEmail}}\",\r\n        \"department\": \"\",\r\n        \"user_title\": \"\",\r\n        \"photo\": \"\",\r\n        \"phone\": \"\",\r\n        \"permission\": {\r\n            \"id\": \"1\"\r\n        },\r\n        \"access_groups\": [\r\n            {\r\n                \"id\": \"\"\r\n            }\r\n        ],\r\n        \"login_id\": \"{{nuid}}\",\r\n        \"password\": \"{{$randomPassword}}\",\r\n        \"user_ip\": \"{{$randomIP}}\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users"
              ]
            },
            "description": "This API is used to create a new user.\n\n#### BODY Parameters:\n\n| **Parameters** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_id | String | Y | ID of the User. Unique.  <br>  <br>When User ID Type in Setting > Server is set to Number, a number between 1 and 4294967295 can be entered. When Alphanumeric is set, a combination of alphabetic characters and numbers can be entered.  <br>Do not use spaces when entering ID.  <br>Numbers or Alphanumeric characters can be set for user_id. For more details, refer to Setting Section of this documentation. |\n| name | String | N | Name of the user. Up to 48 characters. |\n| user_group_id | Number | Y | ID of the User Group that the user will be under. Refer to User Group Section of this documentation for listing available User Groups. |\n| disabled | Boolean | N | Toggle User active or not; false for active, true for non-active. |\n| start_datetime | Date/Time | Y | Start active period for the User.  <br>The earliest allowable value is 2001-01-01 00:00. |\n| expiry_datetime | Date/Time | Y | End active period for the User.  <br>Value can not exceed 2037-12-31 23:59. |\n| email | String | N | Email address of the User. |\n| department | String | N | Department of the User. Up to 64 characters. |\n| user_title | String | N | Title of the User. |\n| photo | Base64 | N | Photo of the User. |\n| phone | String | N | Phone number of the User. |\n| permission | Number | N | Operator Level of the User.  <br>  <br>Use **View User by Account Level** **(GET /api/permissions)** to view the list of available Operator Level and its ID).  <br>  <br>**None**: The user has no operator privilege. To use this Operator Level, remove permission parameter from the API Request.  <br>**Administrator**: The user can use all menus.  <br>**User Operator**: The user can only use the USER and PREFERENCE menus.  <br>**Monitoring Operator**: The user can use the MONITORING and PREFERENCE menus and only view the DASHBOARD, USER, DEVICE, DOOR, ZONE and ACCESS CONTROL menus.  <br>**Video Operator**: The user can only use the VIDEO menu.  <br>**T&A Operator**: The user can only use the TIME ATTENDANCE menu and only view the USER menu.  <br>**User**: The user can only view own information and T&A records. |\n| access_groups | Number | N | ID of the Access Group that the User will have access. Refer to Access Group Section of this documentation for listing available Access Groups.  <br>Can enter more than 1 Access Group. |\n| login_id | String | N | Required when permission parameter is not removed. |\n| password | String | N | Required when permission parameter is not removed. |\n| user_ip | String | N | Limit the access of the User so he/she can only login from the registered IP Address.  <br>  <br>The user IP can be entered in the format xxx.xxx.xxx.xxx. Each octet can only be entered in numbers between 0 and 255.  <br>Users whose user IP is not registered can log in from any IP. |\n| pin | Number | N | PIN of the user. Maximum 32 digit. |\n\nWhen `Setting` > `Server` is set to Number, you can make use of endpoint `/api/users/next_user_id` to automatically get the next `user_id`. Refer to `GET` Find Next Available UserID for the detail of this endpoint.\n\n#### Response Properties:\n\n| **Parameter** | Type | **Description** |\n| --- | --- | --- |\n| total | String | Total of created user |\n| user_id | String | Created user's ID |\n| name | String | Created user's name |\n\n#### Known errors:\n\n- name is more than 48 characters\n    \n- Using single quote on name\n    \n- Duplicate user_id, email, or login_id\n    \n- Empty user_id, user_group_id, start_datetime, expiry_datetime\n    \n- Using user_group_id:id which doesn't exist\n    \n- Putting \"/\" at the end of the endpoint\n    \n- Password with 3 or more subsequent letter or number"
          },
          "response": [
            {
              "name": "New User",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"User\": {\r\n        \"user_id\": \"{{nuid}}\",\r\n        \"user_group_id\": {\r\n            \"id\": \"1\"\r\n        },\r\n        \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n        \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n        \"disabled\": \"\",\r\n        \"name\": \"{{nuid}}{{$randomFirstName}}\",\r\n        \"email\": \"{{nuid}}{{$randomEmail}}\",\r\n        \"department\": \"\",\r\n        \"user_title\": \"\",\r\n        \"photo\": \"\",\r\n        \"phone\": \"\",\r\n        \"permission\": {\r\n            \"id\": \"1\"\r\n        },\r\n        \"access_groups\": [\r\n            {\r\n                \"id\": \"\"\r\n            }\r\n        ],\r\n        \"login_id\": \"{{nuid}}\",\r\n        \"password\": \"{{$randomPassword}}\",\r\n        \"user_ip\": \"{{$randomIP}}\"\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/users",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "users"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "181"
                },
                {
                  "key": "Date",
                  "value": "Tue, 21 Jan 2025 08:15:39 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"UserCollection\": {\n        \"total\": \"1\",\n        \"rows\": [\n            {\n                \"user_id\": \"401\",\n                \"name\": \"401May\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        },
        {
          "name": "Bulk Add New User",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"UserCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1000,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk0\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1001,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk1\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1002,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk2\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1003,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk3\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1004,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk4\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1005,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk5\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1006,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk6\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1007,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk7\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1008,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk8\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1009,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk9\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            },\r\n            {\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"user_id\": 1010,\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk10\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1,\r\n                    \"name\": \"All Users\",\r\n                    \"depth\": 0\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users"
              ]
            },
            "description": "This API is used to create multiple users at once.\n\nThings to be noted when using this API:\n\n- Parameters which can be used is the same as when creating a user (see `Create New User`)\n    \n- `user_id` should be unique.\n    \n- To add a user credential using this API, you must create the credential and include the credential ID in the body.\n    \n- Because syncing users to their devices takes time, it is recommended to add less than 30 users at a time."
          },
          "response": [
            {
              "name": "Bulk Add New User",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"UserCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"user_id\": 10014,\r\n\t\t\t\t\"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"name\": \"nameBulk0\",\r\n                \"user_group_id\": {\r\n                    \"id\": 1\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/users",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "users"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "186"
                },
                {
                  "key": "Date",
                  "value": "Fri, 07 Mar 2025 08:40:15 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"UserCollection\": {\n        \"total\": \"1\",\n        \"rows\": [\n            {\n                \"user_id\": \"10014\",\n                \"name\": \"nameBulk0\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        },
        {
          "name": "Create New User with File Upload",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"name\": \"Ba - sing\",\r\n        \"email\": \"ba-sing@gmail.com\",\r\n        \"user_id\": \"401\",\r\n        \"user_group_id\": {\r\n            \"id\": 1,\r\n            \"name\": \"All Users\"\r\n        },\r\n        \"disabled\": \"false\",\r\n        \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n        \"expiry_datetime\": \"2037-12-31T23:59:00.00Z\",\r\n        \"user_custom_fields\": [\r\n            {\r\n                \"item\": \"Text Input here\",\r\n                \"custom_field\": {\r\n                    \"id\": \"2\"\r\n                }\r\n            },\r\n            {\r\n                \"custom_field\": {\r\n                    \"id\": \"5\"\r\n                },\r\n                \"item\": \"ACCOUNTS.TXT\",\r\n                \"size\": 5768,\r\n                \"document\": \"U1c1IGlzIHRoZSBiZXN0IGRldmVsb3Blcg==\",\r\n                \"mimetype\": \"text/plain\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users"
              ]
            },
            "description": "This example is to show how to create a new user with File Upload.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| custom_field.id | Number | \\*Y | ID of the Custom Field which will be inserted. |\n| item | String | \\*Y | Filename |\n| size | Number | \\*Y | Filesize |\n| document | String | \\*Y | File in Base64 format |\n| mimetype | String | \\*Y | Mimetype document of a file extension for example, TXT = text/plain, JSON = application/json |\n\n#### Notes:\n\n- \\*Y: Required if a file needs to be uploaded to the File Upload Custom Field.\n    \n- custom_field.id can be inferred by using `List Available Custom Field(s)`\n    \n- File need to be converted to Base64 format to upload.\n    \n\n#### Response Example:\n\n``` json\n{\n    \"UserCollection\": {\n        \"total\": \"1\",\n        \"rows\": [\n            {\n                \"user_id\": \"401\",\n                \"name\": \"Ba - sing\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "User: Update",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "const postRequest = {\r",
                  "  url: pm.collectionVariables.get('baseUrl')+\"/api/users/next_user_id\",\r",
                  "  method: 'GET',\r",
                  "  header: {\r",
                  "    'bs-session-id': pm.collectionVariables.get('bsid')\r",
                  "  },\r",
                  "};\r",
                  "\r",
                  "pm.sendRequest(postRequest, (error, res) => {\r",
                  "  console.log(error ? error : res.json());\r",
                  "  const jsonData = res.json();\r",
                  "  pm.collectionVariables.set(\"nuid\", jsonData.User.user_id);\r",
                  "});"
                ],
                "type": "text/javascript"
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  "//Loop Request nLoop times\r",
                  "/*\r",
                  "pm.environment.set(\"nLoop\", 10);\r",
                  "var currentCount = pm.environment.get(\"nLoop\")\r",
                  "if (currentCount > 0){\r",
                  " currentCount = currentCount -1 ;\r",
                  " pm.environment.set(\"nLoop\", currentCount);\r",
                  " postman.setNextRequest(\"Create New User\");\r",
                  "}*/\r",
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"user_group_id\": {\r\n            \"id\": \"1\"\r\n        },\r\n        \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n        \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n        \"disabled\": \"\",\r\n        \"name\": \"\",\r\n        \"email\": \"SW2_00003@gmail.com\",\r\n        \"department\": \"\",\r\n        \"user_title\": \"\",\r\n        \"photo\": \"\",\r\n        \"phone\": \"\",\r\n        \"permission\": {\r\n            \"id\": \"1\"\r\n        },\r\n        \"access_groups\": [\r\n            {\r\n                \"id\": \"\"\r\n            }\r\n        ],\r\n        \"login_id\": \"{{nuid}}\",\r\n        \"password\": \"{{$randomPassword}}\",\r\n        \"user_ip\": \"{{$randomIP}}\",\r\n        \"isExludeSyncADUser\": 1\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "2"
                }
              ]
            },
            "description": "This API is used to update a user.\n\n#### BODY Parameters:\n\n| **Parameters** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_id | String | Y | ID of the User. Unique.  <br>  <br>When User ID Type in Setting > Server is set to Number, a number between 1 and 4294967295 can be entered. When Alphanumeric is set, a combination of alphabetic characters and numbers can be entered.  <br>Do not use spaces when entering ID.  <br>Numbers or Alphanumeric characters can be set for user_id. For more details, refer to Setting Section of this documentation. |\n| name | String | N | Name of the user. Up to 48 characters. |\n| user_group_id | Number | Y | ID of the User Group that the user will be under. Refer to User Group Section of this documentation for listing available User Groups. |\n| disabled | Boolean | N | Toggle User active or not; false for active, true for non-active. |\n| start_datetime | Date/Time | Y | Start active period for the User. |\n| expiry_datetime | Date/Time | Y | End active period for the User. |\n| email | String | N | Email address of the User. |\n| department | String | N | Department of the User. Up to 64 characters. |\n| user_title | String | N | Title of the User. |\n| photo | Base64 | N | Photo of the User. |\n| phone | String | N | Phone number of the User. |\n| permission | Number | N | Operator Level of the User.  <br>  <br>Use **View User by Account Level** **(GET /api/permissions)** to view the list of available Operator Level and its ID).  <br>  <br>**None**: The user has no operator privilege. To use this Operator Level, remove permission parameter from the API Request.  <br>**Administrator**: The user can use all menus.  <br>**User Operator**: The user can only use the USER and PREFERENCE menus.  <br>**Monitoring Operator**: The user can use the MONITORING and PREFERENCE menus and only view the DASHBOARD, USER, DEVICE, DOOR, ZONE and ACCESS CONTROL menus.  <br>**Video Operator**: The user can only use the VIDEO menu.  <br>**T&A Operator**: The user can only use the TIME ATTENDANCE menu and only view the USER menu.  <br>**User**: The user can only view own information and T&A records. |\n| access_groups | Number | N | ID of the Access Group that the User will have access. Refer to Access Group Section of this documentation for listing available Access Groups.  <br>Can enter more than 1 Access Group. |\n| login_id | String | N | Required when permission parameter is not removed. |\n| password | String | N | Required when permission parameter is not removed. |\n| user_ip | String | N | Limit the access of the User so he/she can only login from the registered IP Address.  <br>  <br>The user IP can be entered in the format xxx.xxx.xxx.xxx. Each octet can only be entered in numbers between 0 and 255.  <br>Users whose user IP is not registered can log in from any IP. |\n| pin | Number | N | PIN of the user. Maximum 32 digit. |\n| isExludeSyncADUser | Number | N | 1: User will be excluded from AD or EntraID sync. |\n\nWhen **Setting > Server** is set to **Number**, you can make use of endpoint `/api/users/next_user_id` to automatically get the next user_id. Refer to `GET Find Next Available UserID` for the detail of this endpoint.\n\n#### Known errors:\n\n- name is more than 48 characters\n    \n- Using single quote on name\n    \n- Duplicate user_id, email, or login_id\n    \n- Empty user_id, user_group_id, start_datetime, expiry_datetime\n    \n- Using user_group_id:id which doesn't exist\n    \n- Putting \"/\" at the end of the endpoint\n    \n- Password with 3 or more subsequent letter or number\n    \n- Start and expiry date difference is more than 30 years"
          },
          "response": []
        },
        {
          "name": "User: Bulk Update",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"UserCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"user_id\": \"9\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"1\"\r\n                },\r\n                \"user_ip\": \"191.59.135.73\"\r\n            },\r\n            {\r\n                \"user_id\": \"99\",\r\n                \"login_id\": \"myloginid\",\r\n                \"password\": \"zlwRzi7Kcpi1kiQ\",\r\n                \"user_ip\": \"191.59.135.73\"\r\n            },\r\n            {\r\n                \"user_id\": \"999\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"1\"\r\n                },\r\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n                \"disabled\": \"\",\r\n                \"name\": \"\",\r\n                \"email\": \"SW1_00003@gmail.com\",\r\n                \"department\": \"\",\r\n                \"user_title\": \"\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/bulk",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "bulk"
              ]
            },
            "description": "This API is used for updating user information in bulk.\n\nThe difference of this API and `/api/users?id=1+2+3` is that this API can update different data of many users at the same time.\n\n**Warning:** The maximum number of users that can be modified in a single API call is **100**.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_id | String | Y | User ID of the user. This will be used as the update target. |\n\nAll user information parameters in `/api/users` are included.\n\n#### Response Example:\n\n``` json\n{\n    \"UserCollection\": {\n        \"rows\": [\n            {\n                \"user_id\": \"3\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"2\",\n                \"ret_code\": \"224\"\n            },\n            {\n                \"user_id\": \"1\",\n                \"ret_code\": \"0\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"1\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Request is successful, but partially\"\n    }\n}\n\n```\n\n#### **Response Code:**\n\n**ret_code** presents BioStar X response code for modifying each user. The meaning on each code is explained on `[BioStar X Install Path]\\nginx\\html\\resources\\messages_en`.\n\nFor example `ret_code 224`, find the number in the properties file: `ACB_ERROR_CODE.224 = Cannot use the same previous PW`.\n\n\"Response.code\" could be 0, 1, 8.\n\n- 0 : Overall success.\n    \n- 1 : Partial success\n    \n- 8 : Overall failed.\n    \n\n##### **HTTP Response Code:**\n\n- `200 OK` : Overall success, partial success or overall failed.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": [
            {
              "name": "User: Bulk Update (Success update 100 users)",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"UserCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"user_id\": \"50\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"51\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"52\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"53\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"54\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"55\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"56\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"57\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"58\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"59\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"60\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"61\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"62\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"63\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"64\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"65\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"66\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"67\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"68\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"69\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"70\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"71\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"72\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"73\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"74\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"75\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"76\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"77\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"78\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"79\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"80\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"81\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"82\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"83\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"84\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"85\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"86\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"87\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"88\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"89\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"90\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"91\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"92\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"93\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"94\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"95\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"96\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"97\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"98\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"99\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"100\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"101\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"102\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"103\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"104\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"105\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"106\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"107\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"108\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"109\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"110\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"111\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"112\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"113\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"114\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"115\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"116\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"117\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"118\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"119\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"120\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"121\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"122\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"123\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"124\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"125\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"126\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"127\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"128\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"129\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"130\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"131\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"132\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"133\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"134\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"135\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"136\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"137\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"138\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"139\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"140\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"141\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"142\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"143\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"144\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"145\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"146\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"147\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"148\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"149\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/users/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "users",
                    "bulk"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "3385"
                },
                {
                  "key": "Date",
                  "value": "Tue, 25 Feb 2025 03:50:05 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"UserCollection\": {\n        \"rows\": [\n            {\n                \"user_id\": \"50\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"51\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"52\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"53\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"54\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"55\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"56\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"57\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"58\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"59\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"60\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"61\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"62\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"63\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"64\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"65\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"66\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"67\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"68\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"69\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"70\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"71\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"72\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"73\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"74\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"75\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"76\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"77\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"78\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"79\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"80\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"81\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"82\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"83\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"84\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"85\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"86\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"87\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"88\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"89\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"90\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"91\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"92\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"93\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"94\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"95\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"96\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"97\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"98\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"99\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"100\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"101\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"102\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"103\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"104\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"105\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"106\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"107\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"108\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"109\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"110\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"111\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"112\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"113\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"114\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"115\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"116\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"117\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"118\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"119\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"120\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"121\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"122\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"123\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"124\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"125\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"126\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"127\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"128\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"129\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"130\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"131\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"132\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"133\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"134\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"135\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"136\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"137\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"138\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"139\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"140\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"141\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"142\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"143\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"144\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"145\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"146\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"147\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"148\",\n                \"ret_code\": \"0\"\n            },\n            {\n                \"user_id\": \"149\",\n                \"ret_code\": \"0\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            },
            {
              "name": "User: Bulk Update (Error when user is more than 100)",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"UserCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"user_id\": \"50\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"51\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"52\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"53\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"54\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"55\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"56\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"57\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"58\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"59\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"60\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"61\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"62\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"63\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"64\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"65\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"66\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"67\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"68\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"69\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"70\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"71\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"72\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"73\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"74\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"75\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"76\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"77\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"78\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"79\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"80\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"81\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"82\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"83\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"84\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"85\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"86\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"87\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"88\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"89\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"90\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"91\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"92\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"93\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"94\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"95\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"96\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"97\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"98\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"99\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"100\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"101\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"102\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"103\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"104\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"105\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"106\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"107\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"108\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"109\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"110\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"111\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"112\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"113\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"114\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"115\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"116\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"117\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"118\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"119\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"120\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"121\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"122\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"123\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"124\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"125\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"126\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"127\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"128\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"129\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"130\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"131\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"132\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"133\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"134\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"135\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"136\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"137\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"138\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"139\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"140\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"141\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"142\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"143\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"144\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"145\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"146\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"147\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"148\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"149\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"150\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            },\r\n            {\r\n                \"user_id\": \"151\",\r\n                \"user_group_id\": {\r\n                    \"id\": \"11027\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/users/bulk",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "users",
                    "bulk"
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "400 Bad Request"
                },
                {
                  "key": "Set-Cookie",
                  "value": "JSESSIONID=F61AB7ED1956FEFEDEE65A820BF075EC; Path=/; Secure; HttpOnly"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "128"
                },
                {
                  "key": "Date",
                  "value": "Tue, 25 Feb 2025 03:41:02 GMT"
                },
                {
                  "key": "Connection",
                  "value": "close"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"700\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Failed to parse json data.\"\n    }\n}"
            }
          ]
        },
        {
          "name": "User: Fill Custom Field",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"user_custom_fields\": [\r\n            {\r\n                \"item\": \"Combo option 1\",\r\n                \"custom_field\": {\r\n                    \"id\": \"1\"\r\n                }\r\n            },\r\n            {\r\n                \"item\": \"Text input here\",\r\n                \"custom_field\": {\r\n                    \"id\": \"2\"\r\n                }\r\n            },\r\n            {\r\n                \"item\": \"134669\",\r\n                \"custom_field\": {\r\n                    \"id\": \"3\"\r\n                }\r\n            },\r\n            {\r\n                \"custom_field\": {\r\n                    \"id\": \"5\"\r\n                },\r\n                \"item\": \"ACCOUNTS.TXT\",\r\n                \"size\": 5768,\r\n                \"document\": \"U1c1IGlzIHRoZSBiZXN0IGRldmVsb3Blcg==\",\r\n                \"mimetype\": \"text/plain\"\r\n            }            \r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "3",
                  "description": "ID of the user which will be updated"
                }
              ]
            },
            "description": "Use `GET /api/setting/custom_fields` ([here](https://bs2api.biostar2.com/#864660d4-fafd-46f0-8489-f3fb371faae6)) to view available Custom Fields.\n\nThere are 4 types of Custom Fields: Text Input, Number Input, Combo Box and File Upload. Text Input and Combo Box will accept any value, and Number Input will only receive number.\n\n#### Body Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| item | String | N | Content of the Custom Field |\n| custom_field:id | Number | Y | ID of the Custom Field (This does NOT represent the Custom Field's type) |\n| item | String | \\*Y | Filename |\n| size | Number | \\*Y | Filesize |\n| document | String | \\*Y | File in Base64 format |\n| mimetype | String | \\*Y | Mimetype document of a file extension for example, TXT = text/plain, JSON = application/json |\n\n#### Notes:\n\n- If an API request using the **PUT** method does not include a **Custom Field** in the Body, its value will be removed.\n    \n- To delete a file from a **File Upload Custom Field**, trigger the API using **PUT** and omit the respective **File Upload Custom Field's ID** from the request body. Do note this will also remove the file from the system permanently.\n    \n\n#### Response Example:\n\n``` json\n{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}\n\n```"
          },
          "response": [
            {
              "name": "User: Fill Custom Field (Text Input Box)",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"User\": {\r\n        \"user_custom_fields\": [\r\n            {\r\n                \"item\": \"Your input here\",\r\n                \"custom_field\": {\r\n                    \"id\": \"2\"\r\n                }\r\n            }        \r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/users/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "users",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4",
                      "description": "ID of the user which will be updated"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "107"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 06:25:24 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            },
            {
              "name": "User: Fill Custom Field (Number Input)",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"User\": {\r\n        \"user_custom_fields\": [\r\n            {\r\n                \"item\": \"123456\",\r\n                \"custom_field\": {\r\n                    \"id\": \"3\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/users/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "users",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4",
                      "description": "ID of the user which will be updated"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "107"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 06:32:38 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            },
            {
              "name": "User: Fill Custom Field (Combo Box)",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"User\": {\r\n        \"user_custom_fields\": [\r\n            {\r\n                \"item\": \"Option 2\",\r\n                \"custom_field\": {\r\n                    \"id\": \"4\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/users/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "users",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4",
                      "description": "ID of the user which will be updated"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "107"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 06:36:37 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            },
            {
              "name": "User: Fill Custom Field (File Upload)",
              "originalRequest": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"User\": {\r\n        \"user_custom_fields\": [\r\n            {\r\n                \"custom_field\": {\r\n                    \"id\": \"5\"\r\n                },\r\n                \"item\": \"ACCOUNTS.TXT\",\r\n                \"size\": 5768,\r\n                \"document\": \"U1c1IGlzIHRoZSBiZXN0IGRldmVsb3Blcg==\",\r\n                \"mimetype\": \"text/plain\"\r\n            }            \r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/users/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "users",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "4",
                      "description": "ID of the user which will be updated"
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "107"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 06:39:38 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        },
        {
          "name": "User Credential: Misc (Include Device Default Authentication Mode)",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"pin\": \"\",\r\n        \"security_level\": 0,\r\n        \"private_operation_modes\": [\r\n            {\r\n                \"operation_method\": 2,\r\n                \"operation_mode\": 0,\r\n                \"exclude\": false\r\n            },\r\n            {\r\n                \"operation_method\": 2,\r\n                \"operation_mode\": 1,\r\n                \"exclude\": false\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "101"
                }
              ]
            },
            "description": "On this example you can see how to use stated parameters to adjust misc. credential values.\n\n#### Parameters on this example:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| pin | Number | N | PIN of the User |\n| security_level | Number | N | To set the security level of the credential. The higher the security level is set, the false rejection rate (FRR) gets higher, but the false acceptance rate (FAR) gets lower. Acceptable value: 0 to 5 |\n| private_operation_modes |  |  |  |\n| :operation_method | Number |  | The first credential of an Authentication Mode (0: ID, 1: Card, 2: Fingerprint/Biometric (Standard), 3: Face) |\n| :operation_mode | Number |  | Authentication Mode combination (see below for reference, \"-1\" = do not use) |\n| :exclude | Boolean |  | If Include Device Default Authentication Mode option is on, so when you want to also follow the Auth Modes that the devices have, “private_operation_modes” will have same number of elements that you actually configured. But if Exclude Device Default Authentication Mode is on, you need to add four or more elements because all the values of “operation_method” should be included to override device’s Auth Modes. |\n\n#### Authentication Mode Combination Table:\n\n| **Value** | **Code** | **Description** | **Type** |\n| --- | --- | --- | --- |\n| 0 | BS2_AUTH_MODE_BIOMETRIC_ONLY | Biometric only | Standard |\n| 1 | BS2_AUTH_MODE_BIOMETRIC_PIN | Biometric + PIN | Standard |\n| 2 | BS2_AUTH_MODE_CARD_ONLY | Card only | Standard |\n| 3 | BS2_AUTH_MODE_CARD_BIOMETRIC | Card + Biometric | Standard |\n| 4 | BS2_AUTH_MODE_CARD_PIN | Card + PIN | Standard |\n| 5 | BS2_AUTH_MODE_CARD_BIOMETRIC_OR_PIN | Card + Biometric or PIN | Standard |\n| 6 | BS2_AUTH_MODE_CARD_BIOMETRIC_PIN | Card + Biometric + PIN | Standard |\n| 7 | BS2_AUTH_MODE_ID_BIOMETRIC | ID + Biometric | Standard |\n| 8 | BS2_AUTH_MODE_ID_PIN | ID + PIN | Standard |\n| 9 | BS2_AUTH_MODE_ID_BIOMETRIC_OR_PIN | ID + Biometric or PIN | Standard |\n| 10 | BS2_AUTH_MODE_ID_BIOMETRIC_PIN | ID + Biometric + PIN | Standard |\n| 11 | BS2_EXT_AUTH_MODE_FACE_ONLY | Face | Extended |\n| 12 | BS2_EXT_AUTH_MODE_FACE_FINGERPRINT | Face + Fingerprint | Extended |\n| 13 | BS2_EXT_AUTH_MODE_FACE_PIN | Face + PIN | Extended |\n| 14 | BS2_EXT_AUTH_MODE_FACE_FINGERPRINT_OR_PIN | Face + Fingerprint/PIN | Extended |\n| 15 | BS2_EXT_AUTH_MODE_FACE_FINGERPRINT_PIN | Face + Fingerprint + PIN | Extended |\n| 16 | BS2_EXT_AUTH_MODE_FINGERPRINT_ONLY | Fingerprint | Extended |\n| 17 | BS2_EXT_AUTH_MODE_FINGERPRINT_FACE | Fingerprint + Face | Extended |\n| 18 | BS2_EXT_AUTH_MODE_FINGERPRINT_PIN | Fingerprint + PIN | Extended |\n| 19 | BS2_EXT_AUTH_MODE_FINGERPRINT_FACE_OR_PIN | Fingerprint + Face/PIN | Extended |\n| 20 | BS2_EXT_AUTH_MODE_FINGERPRINT_FACE_PIN | Fingerprint + Face + PIN | Extended |\n| 21 | BS2_EXT_AUTH_MODE_CARD_ONLY | Card | Extended |\n| 22 | BS2_EXT_AUTH_MODE_CARD_FACE | Cardn + Face | Extended |\n| 23 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT | Card + Fingerprint | Extended |\n| 24 | BS2_EXT_AUTH_MODE_CARD_PIN | Card + PIN | Extended |\n| 25 | BS2_EXT_AUTH_MODE_CARD_FACE_OR_FINGERPRINT | Card + Face/Fingerprint | Extended |\n| 26 | BS2_EXT_AUTH_MODE_CARD_FACE_OR_PIN | Card + Face/PIN | Extended |\n| 27 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT_OR_PIN | Card + Fingerprint/PIN | Extended |\n| 28 | BS2_EXT_AUTH_MODE_CARD_FACE_OR_FINGERPRINT_OR_PIN | Card + Face/Fingerprint/PIN | Extended |\n| 29 | BS2_EXT_AUTH_MODE_CARD_FACE_FINGERPRINT | Card + Face + Fingerprint | Extended |\n| 30 | BS2_EXT_AUTH_MODE_CARD_FACE_PIN | Card + Face + PIN | Extended |\n| 31 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT_FACE | Card + Fingerprint + Face | Extended |\n| 32 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT_PIN | Card + Fingerprint + PIN | Extended |\n| 33 | BS2_EXT_AUTH_MODE_CARD_FACE_OR_FINGERPRINT_PIN | Card + Face/Fingerprint + PIN | Extended |\n| 34 | BS2_EXT_AUTH_MODE_CARD_FACE_FINGERPRINT_OR_PIN | Card + Face + Fingerprint/PIN | Extended |\n| 35 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT_FACE_OR_PIN | Card + Fingerprint + Face/PIN | Extended |\n| 36 | BS2_EXT_AUTH_MODE_ID_FACE | ID + Face | Extended |\n| 37 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT | ID + Fingerprint | Extended |\n| 38 | BS2_EXT_AUTH_MODE_ID_PIN | ID + PIN | Extended |\n| 39 | BS2_EXT_AUTH_MODE_ID_FACE_OR_FINGERPRINT | ID + Face/Fingerprint | Extended |\n| 40 | BS2_EXT_AUTH_MODE_ID_FACE_OR_PIN | ID + Face/PIN | Extended |\n| 41 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT_OR_PIN | ID + Fingerprint/PIN | Extended |\n| 42 | BS2_EXT_AUTH_MODE_ID_FACE_OR_FINGERPRINT_OR_PIN | ID + Face/Fingerprint/PIN | Extended |\n| 43 | BS2_EXT_AUTH_MODE_ID_FACE_FINGERPRINT | ID + Face + Fingerprint | Extended |\n| 44 | BS2_EXT_AUTH_MODE_ID_FACE_PIN | ID + Face + PIN | Extended |\n| 45 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT_FACE | ID + Fingerprint + Face | Extended |\n| 46 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT_PIN | ID + Fingerprint + PIN | Extended |\n| 47 | BS2_EXT_AUTH_MODE_ID_FACE_OR_FINGERPRINT_PIN | ID + Face/Fingerprint + PIN | Extended |\n| 48 | BS2_EXT_AUTH_MODE_ID_FACE_FINGERPRINT_OR_PIN | ID + Face + Fingerprint/PIN | Extended |\n| 49 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT_FACE_OR_PIN | ID + Fingerprint + Face/PIN | Extended |"
          },
          "response": []
        },
        {
          "name": "User Credential: Misc (Exclude Device Default Authentication Mode)",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"pin\": \"\",\r\n        \"security_level\": 0,\r\n        \"private_operation_modes\": [\r\n            {\r\n                \"operation_method\": 2,\r\n                \"operation_mode\": 0,\r\n                \"exclude\": false\r\n            },\r\n            {\r\n                \"operation_method\": 0,\r\n                \"operation_mode\": -1,\r\n                \"exclude\": true\r\n            },\r\n            {\r\n                \"operation_method\": 1,\r\n                \"operation_mode\": -1,\r\n                \"exclude\": true\r\n            },\r\n            {\r\n                \"operation_method\": 3,\r\n                \"operation_mode\": -1,\r\n                \"exclude\": true\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "101"
                }
              ]
            },
            "description": "As stated on previous example (User Credential: Misc (Include Device Default Authentication Mode)), when you want to use Exclude Device Default Authentication Mode then you need to state all values of the Authentication Method.\n\nOn this example, the Authentication Mode that's being used is Biometric (operation_method: 2) only (operation_mode: 0) and the other Authentication Method: ID (0), Card (1), and Face (3) are set as do not use (operation_mode: -1) and hidden (exclude: true)\n\nTo use Extended Auth Mode simply use code that starts from 11 (refer to Authentication Mode Combination Table on User Credential: Misc (Include Device Default Authentication Mode)), do note that this mode only supported by FaceStation F2."
          },
          "response": []
        },
        {
          "name": "User Credential: Card",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "//Get Value from external dataset\r",
                  "val = pm.iterationData.get(\"value\");\r",
                  "val1 = pm.iterationData.get(\"id\");\r",
                  "//Assign value to global variable\r",
                  "pm.collectionVariables.set(\"iterIDVal\", val)\r",
                  "pm.collectionVariables.set(\"iterIDVal1\", val1)"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"cards\": [\r\n            {\r\n                \"id\": \"{{iterIDVal}}\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{iterIDVal1}}"
                }
              ]
            },
            "description": "This example shows how to assign a card to a User, which is applicable to CSN, Wiegand, Smart, Mobile, and QR/Barcode.\n\nFirst the card must be enrolled to the database by using `POST /api/cards`.\n\nAfter enrolled, use `GET /api/cards` to view all Cards or `GET /api/cards/unassigned` to view all Cards which are unassigned.\n\nSelect a card from the response and apply it on the body as shown on the example to assign it to the selected user."
          },
          "response": []
        },
        {
          "name": "User Credential: Fingerprint",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"fingerprint_templates\": [\r\n            {\r\n                \"finger_mask\": \"false\",\r\n                \"template0\": \"RSoQFLAAVUYMBEBvBBlEsWSLFITAEIUGBgEYBA/G0W0IAwcgdgEbh2ANixfIMGUKEshwF4QOCbBzhjXEsaCFJITQAYohRSBViCSGoUsRLAcQooYoh6GlCDpIgZ2GKMkARgkyCXCehDhJgEIDG0sxYJsOy0BziBaMcGmPG4ywUaAVTdBokwxOEXgHEE6AeIIVT0FoERfPYBsxGg9gK9EK0QB4jRxSYRqFEhNAbxkXk1AUChiTUHSHL8zwl4EmDiE3CCHPADWKK5DAOo8nUZAqDS5SIUKXK9JhOZj////g/////////eAB///////d4AEi/////N3gASM////M3eABIzT/+7zd4BIzRE+7u83gEjNET7u7zeASNERFu7vN4BI0REW6u8zgIzRERaqqvOAjRERFqqq84TREREWqqrziNFVUT6mqvOJFVVVfqqq9BFVVVU/5qrqHd2ZU//+qqZiIdkT///qqqZh1T///+6qqqYX/////u6uqj///\",\r\n                \"template1\": \"RSgQFK8AVUYRBDBvhxqEgBGFHsSRZwsIhRF1BQtGIRuEFsZxawgJRwB5AR4H4GULGYgQF4UUyYB0hyqEsAOJJsTRWIgrRkBKjyKG4QoLMsbwooQvB3GkBi9I0EYHOUnBnQMJSgF4ghXK8HWKHYwQZ5EIzQAfhRPN4XsEHA4BbBYXzhB5hRzO8WaYB89AdoQeT0AdsQgQAHiJDlFQdoIiSvFfHCLMcE4iNszwmAIszkE2hihO8DQJIM9QKkMxEJA3CC4RwCeOIlKBHAMxEsBFIv///d3////////M3eD/////+8zd4BL///+7zN3gEj//+rvM3eASM/+qu8zd4BIzT6q7vM3gEjRFqqq7zeASNESqqrvN4CNERaqqq7zhI0RFqqqrvOE0REWqqqq84jRFVaqqqrwDRFVVqqmavQRVVVWqqqq9JVVVVvq7qqmHdmZv/6qqqZiHZm//+qqqmZhV////u6qqmFT///+7uqqoT/8=\"\r\n            },\r\n            {\r\n                \"finger_mask\": \"true\",\r\n                \"isNew\": true,\r\n                \"template0\": \"RDMQFLMAVUYqCxCIFCyhiDMthws5MBAMIzEcBRE5ngYwQIwND02jBWUP6AV2I18FcTfjBFE5ZQpeROADPVWCmzxhCfw+ZERIOXK1JzVzsykxdLUjIngqgih+rhAlfyaNPoAZGiGFqwwqhpuMTFbqj0NZXBxfXNeCUV1Ri2BkVgJvaVwGUWtGilZsTopmbtQDSm9GCkNyKpNbdlGIa3hahUh6NgxBfB6eRH6zFHSC2RBSgzYPZYvXDVONHEVNjbKlV45N4WKO25hVlJWkYpT0lWyV6Q////7gASL/////3eABIj////zd4AEjM///vN3gASMz//+83e4BIzRPq7zN4BEjRESrvM3gEjNERLu7zOASM0REu7vM4BM0RESru7zQE0RERKu7vNAjREREqqq7wDRVVET6qqqnZlVURPqqmZh2ZVVF+qqZmYdmVVb/qrvLmHZVV//6vMuodlX////MzLl0X////8zMy+FP////vMzL4P//\",\r\n                \"template1\": \"RDQQFLMAVUYkEBKGDzKihS4yj4o2NAmKHzYeBgw/nwQrR4wOYRToBXIoXQZtPOEFTEFpiVxJ4YMJVKMEOVyCmD9gXBs4Zwn4OWpEUjVqOEI3bTkjM3e7JT93JZM0e66hHX0vhi5+pJskg64SQIOyHCCEKI0niZkQR1zqklxf3AJNY1KLW2lYg2tuXAZLcUoJUnJPimNz1wJ7c98PRnRECld7UIlofFuFYX3UBWR9VgdEfzYOcYXdD02HOw5iitcIR4spimOLYghNkbsLT5FED2eS5Alfkt2T///+4BH//////97gESL/////3uASIz///8ze4BIjNP/7zN7gEiM0/7u83uASM0RFu7zd4BIzRES7vM3hEjNERLu7zQEjNEREu7vN4SM0RES7u83hI0RERLu7vOE0RERFqqq84kVVREWqqqqWZlVERfqqmph2ZVRF//mruodmVF///7y6h2ZU////vLuYZU/////MvLo0T////8y8z////w==\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "14"
                }
              ]
            },
            "description": "This example shows how to update fingerprint data on a User.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| fingerprint_templates |  |  |  |\n| :finger_mask | Boolean | N | Set to True to mark the fingerprint as a duress fingerprint. When threatened by someone to open the door, the user can authenticate using this fingerprint to send an alarm signal to BioStar X. |\n| :template0 | Raw | Y | First scan template of the fingerprint |\n| :template1 | Raw | Y | Second scan template of the fingerprint |\n| :isNew | Boolean | N |  |\n\nUse `POST` `/api/devices/:dev_id/scan_fingerprint` to enroll fingerprint  \nUse `POST` `/api/server_matching/identify_finger` to check whether the fingerprint already recorded or not.\n\n- Raw data for template0 and template1 available after enrolling a fingerprint.\n    \n- Fingerprint(s) used for regular access should not be registered as duress fingerprint.\n    \n- If the fingerprint authentication rate is low, delete the existing fingerprint information and add a new fingerprint.\n    \n- Use an adequate security level. If 1:1 Security Level is too high, the fingerprint authentication rate may be too low or the false rejection rate (FRR) may be too high.\n    \n- For best fingerprint scanning quality, make sure to cover the entire surface of the fingerprint sensor with the finger."
          },
          "response": []
        },
        {
          "name": "User Credential: Face",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"credentials\": {\r\n            \"faces\": [\r\n                {\r\n                    \"raw_image\": \"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/ This is a truncated RAW Data\",\r\n                    \"templates\": [\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABq83b11/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACs9nf9Ov5vAxz64gF2/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABY+AP9VfxIB1T5zANF/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABr9I79d/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADM+FX9O/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACZ90T6E/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAp+eAAtv4QBOz7MgJ5/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAm+OMHjP9OBZ/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADZ9Un40fkJCKDzsv/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACC9ET98/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADv9jv6m/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACL8834ZPf5B7XxmgLw+1kBifoSEMrp5PIDCx8acwKeCJ7a5gYSA5oDKAkB9UT6Ae17F18EWP1gAlDxW/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAh+Y8EXvwlAGD6+wOy/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADU8nL8pvcyA6H1lP9P+AABqPw1Du/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAB09TD+u/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADZ/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABi+U78LPkEAUH7LgPs/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAM/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAD69iL9v/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAH+jcCd/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAl+f0ERADdBj/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAb+9MHIgKaBe36dwFm/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAB6+HYH2P+QBYb42gA2/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABG+gsHjQLuBaX7pf86/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADE96kF5Pz4Bsb4Cv6S/ Truncated\"\r\n                        }\r\n                    ]\r\n                },\r\n                {\r\n                    \"raw_image\": \"/9j/4AAQSkZJRgABAQAAAQABAAD/ Truncated\",\r\n                    \"templates\": [\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABu8qP+lPvSCAj2eQXHAnkBPfqWD/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAA+9R733fQfCmn3UwVfAC0B4fgaEBPsWPJQB3IYmP+jB9ndMgcPCBAJvgp/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACN93D/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAB7+Y/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACS8Qb9mf2vCnL2QgU5AV8Bifq3D3vn4PMdClcYyf8nCtnbKgWg9igF0Bff+VP5p/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABO+Cv/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADn8j36PvezBVj1WAA491D/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAA19ar5EfSCCev5TQWJA6YAYPhUE97ppPLKB3Igs/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACb9Pz9EPzQBlv3bwJKAPf/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADy95n9o/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAa8lX8MvVkCQ7yDQIN+4ABtfp4DfvnC/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACU8t747PMICNDz9AAcAFEB6/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADl+en+if33BEL4oP7T+24EYvyfEmHpKfRrB/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACe/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADU+Pn/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAD49sL9HP5EA3j5NP7F+wYA1vl4ENnoJfbRCvES3v1ZCuDZrQWP/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADd+TsJu/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAy8DgAn/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACY+noFNvzsBDP+mQLp+sP9LvxsFjflI/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACX9cL9evw0BET1Sv5G/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADW+ZIG2v2PAxj8nQHx+yb8xvq/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAA79hL9qPxvAyX5wQA8+F7+pvfXDIPlkPOpB2EUVP8RBmvW7gF3+9oFfxEa9br1K/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABU+/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADg+74DUvxrBPL+NgSM+hX/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACW+10JkwElBy79hwNj/ Truncated\"\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "102"
                }
              ]
            },
            "description": "This example shows how to add a Face Credential on a User.\n\nYou can add the user's faces if the device supports face authentication.\n\n- When registering a face, maintain a distance of 40cm to 80cm between the device and the face.\n    \n- Be careful not to change the facial expression. (smiling face, drawn face, wink, etc.)\n    \n- If you do not follow the instructions on the screen, the face registration may take longer or may fail.\n    \n- Be careful not to cover the eyes or eyebrows.\n    \n- Do not wear hats, masks, sunglasses or eyeglasses.\n    \n- Be careful not to display two faces on the screen. Register one person at a time.\n    \n- It is recommended for a user wearing glasses to register both faces with and without glasses.\n    \n\n#### Parameters on this example:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| faces | Array | Y | Main container of the credential |\n| :raw_image | Raw | Y | Raw image of the face scan |\n| :templates | Array | Y | Container of the face templates |\n| ::template | Raw | Y | Face template of the User |\n\nTo get data for parameter raw_image and template, use `GET` `/api/devices/:device_id/credentials/face`\n\nUse `POST` `/api/v2/devices/search` to list all device which can support the selected credentials. See API documentation for details on the usage of the API.\n\nWhen updating a User, it is required to put the credential data as acquired from `GET` `/api/users/:id`  \nThis is done so the data won't be lost after update.\n\nTo delete a Face, skip the parameters on using this API.\n\nYou can use `raw_image` value as value on photo parameter of a User."
          },
          "response": []
        },
        {
          "name": "User Credential: Visual Face",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"credentials\": {\r\n            \"visualFaces\": [\r\n                {\r\n                    \"template_ex_normalized_image\": \"/9j/4AAQSkZJRgABAQEASABIAAD/ Truncated\",\r\n                    \"templates\": [\r\n                        {\r\n                            \"credential_bin_type\": \"5\",\r\n                            \"template_ex\": \"AAABAAEAKgHyAaUA1wBj8vP2XEpVQSt0dQAAhQApwwBkcAAAOQAAAIR9eH6CiHmDeIJ+hHp/fX54eoOMdol5f4d9fYGHfoSAfHiAenuJgYZ8g3yAfXmBg36CgoGGhn6Ce3eDeXp3eIWGbnqGfJF4hIl4cX54gX+Ceod8cIJ9g32CgH+AhoeBgH12go57h4F4iXh6g31+gX+BdnyKhYKCfXqLeX2AgomMfYR/foKDgXt7hHp/fXh6g315dnp/f4N8f3h9g3Z+c3J7hH9/gYaFfoGKd3yHeXl/d3+AeXd+fYR8fn2Dd4OGfoF8hIGCgn+DfH+HhXp/e4V9fHiAhXeBgX94f3F6hIeBent8fYCAg4J1hnl+c4F6doZ9g32JhnuDg3l4fXyEg3uEfYmEh3yCf4Z2gH2BgoZ/g3p2hXuIhIOCfYKBfXd8hIeDdYSFfHSDg3R+d4eBeY98gXp1dH59fHyBhXl4hG+Aen2De4OCgIGKhXmFgnuHfH98hIl6fIZ0gIB2homJgHuFf4OKhYZ8hHqFgoB9jYeGgX57iYGCfIV6f4aBfnqAhoV9e4KBgYmDgH55g4Z8hoCDhIR8gIOHfniChIB5hXl/gIV4f4l+g3V5hn5/f45/fHmAgIB5gIR8fYiGeoKBdXZ+eIB+gneDenl+fIGBgIeEf4CCjIJ3eYKCiX13gHh9eIeChX6FdYGFfYSFhn6EhYCGf4h5e4OLfYl9gIN3fYR8\"\r\n                        },\r\n                        {\r\n                            \"credential_bin_type\": \"9\",\r\n                            \"template_ex\": \"AAABAAEAVgHZAa8A4wAAAAAAWFVLREUAAAAAdVANMQFkcAAAOQAAAIWEdn+Din+Ed4GCg3eAhHl4gX6OdI56foZ7e3yGe4d7d4OIfnaFgYJ/goB7eniCgXx8gYSEhHqBfXp/eoJ2f4GFcYCAfYV7gYZ3d3l4hHqEfI94cYCDg3+Bf397iYyAgHx7gIp4hol2gnx7hYGAe4KGf4J+gYR+fneJd319gouMf4CAgoWKe3p/hH1/g3pygH57eYGCfop/eoCAi3l6c3d7hIaAiICCfnyIc3qCdXx9en2AeH6DgXp9e4CDe4yGfIKEfoKGgXiCgYOEhnl4foCDf3uFg3qBgIF2g3J8foSBeXh7gYOCgYB6iIR9enx7dYR/fX6AgoCCgXh8fXyAeXuAfYmGiXd9f4p2gXqBgoh7hXl8hXuCgoGCgYZ+e3p/hYSBgomLgnOBf3uCe4WEhIx6fnt4eYZ8gnt7hnp7gHqFfoF/fYCAhIKCgnaDenyJf3t+goh4hYV2goN7g4eNfYOBd4KLgoSBh3qAhn5/joGDgYF6gH6HfYlzhop9hH6AeYGAgH9/gIt/iYJ+god9jYOCgoR/g4WCg3WCg4B4hXl8fYR5iYGAg353g3R6fYd7d3WHgX1xf3t4gYWIeYKEe3h8eoOBf3WGdYCChIR7foiDgX56hYh+eX6AiXuBfXiAdomAeoB+doSCf4aFgXmDgX2AfYp9fH2KfIR6foJwfIOB\"\r\n                        }\r\n                    ]\r\n                },\r\n                {\r\n                    \"template_ex_normalized_image\": \"/9j/4AAQSkZJRgABAQEASABIAAD/ Truncated\",\r\n                    \"templates\": [\r\n                        {\r\n                            \"template_ex\": \"AAABAAEAgwFoAbgA6gBl8vryXUdWNip7hwAAnKA+uQBkcAAAOQAAAIZ7eX5/iX2CeH59iXuAgH1vfoWNdop8gIqAfoCIe4iAdYGFenmHgId7fH5+fHN/g3+GgICCgHmCe3mEc3tze4uGdH+IgYt5hIR4dYN4gn+AeoV8b4B8g3qAh4GFiId/f391gYp3foJ2iHp6gXuAg3uBgH+Jg4F8fneHgICEg4aMfH9/fISEgH17iHh4fnp1hIF/fXyBeYaAfn96hXZ8e3R+gX98hYOAf32GeX+Ie3x9d314fHyBgIR6fYKDeIWHf4KDiICFhnuAeoB7gXeEe4B8fnl/h3d5hIJ6fXR5f4aFfXyBe4B+hIRziYN6eYR7eH9/gYCEgHuCgHp4fYOHgoN/eomGh3Z7e4Vzf3qAjYt+gH16gX2Dgn6DfIOAfnZ6hYuAfISKgXiFgHV9d4uBf4iFgHZ5d3x9gXx5gn55hHSCfn6AfYSBhIKIhnSFhYGMen58gYd7gIN2fnl5h4SLgnmHfX2HgYV7gH2Fe4F7h4GBfn98iH+DfYl5gIJ9g319gIV/g4J8gYV/fHt5hIN9i4KEg35+h4eJg4B8fHp7gXl+hYJzf4V6gntxhn9+eoR/fHuDfHx7gIJ4f4SBfH9+doB9d4F/fXaFdHl9eoOEfoWEf3uEhoV0doCCjHt0hXl+coOAg4ODdYSGgIOHh3yBioCEeYx7eXyMf4l/hYF1foWD\",\r\n                            \"credential_bin_type\": \"5\"\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "102"
                }
              ]
            },
            "description": "Visual Face is a credential that captures the user's face with a visual camera. It is different from face information captured with an infrared camera and is only available on devices that support Visual Face.\n\nThere are two ways to input a Visual Face: by scanning through a enrollment device, or by uploading an image.\n\nUp to two (2) visual faces can be added.  \nUse `GET /api/devices/:device_id/credentials/face` to scan Visual Face using an enrollment device.\n\nYou can enroll a visual face using FaceStation F2.  \nUse `POST /api/v2/devices/search` to list compatible devices.\n\nTo upload image as a Visual Face: image file size is up to 10MB and supported file formats are JPG, JPEG and PNG.  \nUse `PUT /api/users/check/upload_picture` to check whether the image is suitable for use or not.  \nBODY example on using Upload Picture:\n\n``` json\n{\n\"User\": {\n \"credentials\": {\n  \"visualFaces\": [{\n   \"template_ex_picture\": \"/9j/4AAQSkZJRgABAQAAAQABAAD/ Truncated\"\n  }]\n }}\n}\n\n```\n\nParameters on this example:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| visualFaces | Array | Y | Main container of Visual Face credential |\n| :template_ex_normalized_image | Base64 | Y | Cropped image ready for visual face extraction. |\n| :templates | Array | Y | Container of the templates |\n| ::credential_bin_type | Number | Y | UNKNOWN = -1  <br>FACE_TEMPLATE = 0  <br>FACE_TEMPLATE_IMAGE = 1  <br>FACE_RAW_IMAGE = 2  <br>FACE_TEMPLATE_EX_VER_2 = 5 (For FaceStation F2)  <br>FACE_TEMPLATE_EX_VER_3 = 9 (For BioStation 3 and W3)  <br>FACE_TEMPLATE_EX_NORMALIZED = 7  <br>FACE_TEMPLATE_EX_PICTURE = 8 |\n| ::template_ex | Raw | Y | Visual Face template data which includes FaceStation F2 and the new BioStation 3. |\n| :template_ex_picture | Base64 | Y | Parameter for Upload Picture raw data |"
          },
          "response": []
        },
        {
          "name": "Check Picture Specification",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"template_ex_picture\": \"/9j/4AAQSkZJRgABAQEASABIAAD/ Truncated\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/check/upload_picture",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "check",
                "upload_picture"
              ]
            },
            "description": "This API is used to check whether the image that will be uploaded on Visual Face credential is according to specification or not.\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| template_ex_picture | Base64 | Y | Image that will be checked |\n\n- Supported image file size is up to 10MB.\n- Supported image file formats are JPG, JPEG and PNG."
          },
          "response": []
        },
        {
          "name": "Delete User(s)",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "//batch delete\r",
                  "/*\r",
                  "var currentCount = pm.collectionVariables.get('nLoop');\r",
                  "if (currentCount > 203){\r",
                  " currentCount = parseInt(currentCount)-1;\r",
                  " pm.collectionVariables.set('nLoop', currentCount);\r",
                  " }*/\r",
                  "\r",
                  "/* batch delete subsequent users\r",
                  "var text =\"\";\r",
                  "var i = 9001;\r",
                  "for (; i <= 9973; i++) {\r",
                  "  text += i + \"+\";\r",
                  "}\r",
                  "text = text.slice(0, -1); \r",
                  "pm.collectionVariables.set('nLoop',text);\r",
                  "*/\r",
                  "\r",
                  "pm.iterationData.get(\"iterIDVal\")"
                ],
                "type": "text/javascript"
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/users?id={{iterIDVal}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "{{iterIDVal}}",
                  "description": "ID of the User which will be deleted. To delete multiple Users, use plus (+) sign as separator of each User ID. Ex: 1001+1002+1003+1004\nUse GET /api/users to list available users"
                }
              ]
            },
            "description": "This API is used to delete user(s) from BioStar X.\n\n#### Known errors:\n\n- Empty parameter id\n    \n- Using id which doesn't exist"
          },
          "response": []
        },
        {
          "name": "Delete User(s) with Advanced Search",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "//batch delete\r",
                  "/*\r",
                  "var currentCount = pm.collectionVariables.get('nLoop');\r",
                  "if (currentCount > 203){\r",
                  " currentCount = parseInt(currentCount)-1;\r",
                  " pm.collectionVariables.set('nLoop', currentCount);\r",
                  " }*/\r",
                  "\r",
                  "/* batch delete subsequent users\r",
                  "var text =\"\";\r",
                  "var i = 9001;\r",
                  "for (; i <= 9973; i++) {\r",
                  "  text += i + \"+\";\r",
                  "}\r",
                  "text = text.slice(0, -1); \r",
                  "pm.collectionVariables.set('nLoop',text);\r",
                  "*/\r",
                  "\r",
                  "pm.iterationData.get(\"iterIDVal\")"
                ],
                "type": "text/javascript",
                "packages": {}
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"adv_criteria\": {\r\n        \"limit\": 50,\r\n        \"order_by\": \"user_id:false\",\r\n        \"user_group_ids\": [\r\n            1121\r\n        ],\r\n        \"user_id\": \"11\",\r\n        \"user_email\": \"abc@gmail.com\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/advance_search/delete?adv=mode1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "advance_search",
                "delete"
              ],
              "query": [
                {
                  "key": "adv",
                  "value": "mode1",
                  "description": "Use this to enable Advanced Search query result."
                }
              ]
            },
            "description": "This API is used to delete user(s) which is collected from Advanced Search query.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| adv_criteria | Object | Y | See Batch Edit with Advanced Search for adv_criteria details. |\n\n#### Response Example:\n\n``` json\n{\n  \"Response\" : {\n    \"code\" : \"0\",\n    \"link\" : \"https://support.supremainc.com/en/support/home\",\n    \"message\" : \"Success\"\n  }\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "Send User Data to Device",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"DeviceCollection\": {\r\n    \"rows\": [\r\n      {\r\n        \"id\": \"543720368\"\r\n      }\r\n    ]\r\n  }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/export?overwrite=true&id=15&adv=mode1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "export"
              ],
              "query": [
                {
                  "key": "overwrite",
                  "value": "true",
                  "description": "Toggle to overwrite the data on the device. True to overwrite (default value)\n"
                },
                {
                  "key": "id",
                  "value": "15",
                  "description": "ID of the User that will be sent to the Device. To send multiple users, use plus (+) sign as separator of each User ID. Ex: 1001+1002+1003+1004"
                },
                {
                  "key": "adv",
                  "value": "mode1",
                  "description": "Use this to enable Advanced Search query result."
                }
              ]
            },
            "description": "This API is used to send user data to a device.\n\nFor example when you want to send user John data after credential update to FaceStation F2.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the device |\n\n#### Response Example:\n\n``` json\n{\n  \"DeviceResponse\" : {\n    \"rows\" : [ {\n      \"id\" : \"50362288\",\n      \"code\" : \"0\"\n    } ],\n    \"result\" : \"true\"\n  },\n  \"Response\" : {\n    \"code\" : \"0\",\n    \"link\" : \"https://support.supremainc.com/en/support/home\",\n    \"message\" : \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| DeviceResponse | Object | Response from device |\n| DeviceResponse.rows | Array | List of device ID |\n| DeviceResponse.result | Boolean | Indicate success or fail |\n| Response | Object | Indicate success or fail |\n\n#### Notes:\n\n- Set `adv=mode1` on Query Parameter to enabled advanced search compatibility. This parameter is optional. When not used, it will use the previous capability.\n    \n- Request Body with Advanced Search example (see `Batch Edit with Advanced Search` for `adv_criteria` details) :\n    \n\n``` json\n{\n  \"DeviceCollection\" : {\n    \"rows\" : [ {\n      \"id\" : \"50362288\"\n    } ]\n  },\n  \"adv_criteria\" : {\n    \"limit\" : 50,\n    \"order_by\" : \"user_id:false\",\n    \"user_group_ids\" : [ 1014 ],\n    \"user_id\" : \"8\",\n    \"user_email\" : \"support@supremainc.com\"\n  }\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "Delete User(s) From Device (Advanced Search)",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "//batch delete\r",
                  "/*\r",
                  "var currentCount = pm.collectionVariables.get('nLoop');\r",
                  "if (currentCount > 203){\r",
                  " currentCount = parseInt(currentCount)-1;\r",
                  " pm.collectionVariables.set('nLoop', currentCount);\r",
                  " }*/\r",
                  "\r",
                  "/* batch delete subsequent users\r",
                  "var text =\"\";\r",
                  "var i = 9001;\r",
                  "for (; i <= 9973; i++) {\r",
                  "  text += i + \"+\";\r",
                  "}\r",
                  "text = text.slice(0, -1); \r",
                  "pm.collectionVariables.set('nLoop',text);\r",
                  "*/\r",
                  "\r",
                  "pm.iterationData.get(\"iterIDVal\")"
                ],
                "type": "text/javascript",
                "packages": {}
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript",
                "packages": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DeviceCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"40000701\"\r\n            }\r\n        ]\r\n    },\r\n    \"adv_criteria\": {\r\n        \"limit\": 50,\r\n        \"order_by\": \"user_id:false\",\r\n        \"user_name\": \"a\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/remove?adv=mode1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "remove"
              ],
              "query": [
                {
                  "key": "adv",
                  "value": "mode1",
                  "description": "Use this to enable Advanced Search query result."
                }
              ]
            },
            "description": "This example shows how to delete users in device(s) in concurrence with Advanced Search query result.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| DeviceCollection | Object | Y | Device collection. |\n| DeviceCollection.rows | Array | Y | Device ID(s) which user data will be deleted. |\n| adv_criteria | Object | Y | See Batch Edit with Advanced Search for adv_criteria details. |\n\n#### Response Example:\n\n``` json\n{\n  \"DeviceResponse\" : {\n    \"rows\" : [ {\n      \"id\" : \"50362313\",\n      \"code\" : \"0\"\n    } ],\n    \"result\" : \"true\"\n  },\n  \"Response\" : {\n    \"code\" : \"0\",\n    \"link\" : \"https://support.supremainc.com/en/support/home\",\n    \"message\" : \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| DeviceResponse | Object | Response from device |\n| DeviceResponse.rows | Array | List of device ID |\n| DeviceResponse.result | Boolean | Indicate success or fail |\n| Response | Object | Indicate success or fail |"
          },
          "response": []
        },
        {
          "name": "List Idle Users",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"offset\": 0,\r\n        \"limit\": 0,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"user_group_id.id\",\r\n                \"operator\": 2,\r\n                \"values\": [\r\n                    2\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"user_id\",\r\n                \"descending\": false\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/absence?search_month=1&last_modified=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "absence"
              ],
              "query": [
                {
                  "key": "search_month",
                  "value": "1",
                  "description": "Number of months to look back. Users with no activity within this range are returned. Optional (default = 0)"
                },
                {
                  "key": "last_modified",
                  "value": "0",
                  "description": "UNIX timestamp. Only returns users modified after this time. (Unused if 0)"
                }
              ]
            },
            "description": "Show user(s) which do not have any activity on the last n month(s).\n\nn = search_month parameter\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| offset | Number | Y | Default: 0. Shift the response record(s) according to the specified value |\n| limit | Number | Y | Default: 0. Limit the response record(s) shown by the specified value. |\n| conditions:column | String |  | Column/field which the condition will be based on. |\n| conditions:operator | Number |  | 0 = EQUAL  <br>1 = NOT_EQUAL  <br>2 = CONTAINS  <br>3 = BETWEEN (values\\[0\\], values\\[1\\]) |\n| conditions:values | Number |  | Value of the condition according to the operator and column. |\n| orders:column | String | N | Column/field which the order will be based on. |\n| orders:descending | Boolean | N | Toggle false to set the response's order as ascending. |\n\n#### Error Codes:\n\n- 400: Invalid query parameters\n    \n- 405: Method not allowed (only POST supported)\n    \n- 500: Internal server/database error"
          },
          "response": []
        },
        {
          "name": "List Idle Users - Multiple ID",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"offset\": 0,\r\n        \"limit\": 0,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"user_id\",\r\n                \"operator\": 2,\r\n                \"values\": [\r\n                    1,2,4\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"user_id\",\r\n                \"descending\": false\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/absence",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "absence"
              ],
              "query": [
                {
                  "key": "search_month",
                  "value": "9",
                  "description": "Filter user(s) which idle for the last n month(s).",
                  "disabled": true
                }
              ]
            },
            "description": "This example shows a workaround using this API to get multiple users data by adjusting the parameters.\n\nThe advantage of this workaround is that the API response can be adjusted to only show only the required users directly.\n\n*   Query parameter search_month value is set to 0 or removed\n*   Body parameter conditions:column value set to user_id, :operator value to 2 (contains), and :value can specify multiple user id which uses comma as separator.\n    \n\nFor BODY Parameter details refer to POST List Idle Users."
          },
          "response": []
        },
        {
          "name": "Delete Idle Users",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"offset\": 0,\r\n        \"limit\": 0,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"user_group_id.id\",\r\n                \"operator\": 2,\r\n                \"values\": [\r\n                    2\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"user_id\",\r\n                \"descending\": false\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/absence/delete?search_month=1&id=10 11",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "absence",
                "delete"
              ],
              "query": [
                {
                  "key": "search_month",
                  "value": "1",
                  "description": "Filter user(s) which idle for the last n month(s)."
                },
                {
                  "key": "id",
                  "value": "10 11",
                  "description": "ID of the idle users which will be deleted. Use space as separator to delete multiple users."
                }
              ]
            },
            "description": "This API is used to delete idle users.\n\nFor BODY parameter refer to POST List Idle Users."
          },
          "response": []
        },
        {
          "name": "Advanced Search",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"limit\": 50,\r\n    \"order_by\": \"user_id:false\",\r\n    \"user_group_ids\": [\r\n        1004\r\n    ],\r\n    \"user_id\": \"45\",\r\n    \"user_name\": \"Riz\",\r\n    \"user_email\": \"@gmail.com\",\r\n    \"user_department\": \"oddBit\",\r\n    \"user_title\": \"Mister\",\r\n    \"user_card\": \"12\",\r\n    \"user_operator_level_id\": \"255\",\r\n    \"user_access_group_ids\": \"1\",\r\n    \"user_custom_field_1\": \"custom field 1\",\r\n    \"user_custom_field_2\": \"123\",\r\n    \"user_custom_field_3\": \"test1\",\r\n    \"user_custom_field_4\": \"custom field 4\",\r\n    \"user_custom_field_5\": \"456\",\r\n    \"user_custom_field_6\": \"test4\",\r\n    \"user_custom_field_7\": \"custom field 7\",\r\n    \"user_custom_field_8\": \"789\",\r\n    \"user_custom_field_9\": \"test5\",\r\n    \"user_custom_field_10\": \"custom field 10\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/users/advance_search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "users",
                "advance_search"
              ]
            },
            "description": "This API is used to fetch user information via advanced search.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| limit | Number | N | The maximum number of users to return. Default is 50. |\n| offset | String | N | The number of users to skip before starting to return results. Default is 0. |\n| user_id | String | N | The User ID to search, supports like search |\n| user_group_id | String | N | Group ID for search user. Also gets the child user group |\n| user_group_ids | String | N | Array of Group IDs for advanced search parameter |\n| user_name | String | N | User name for Advance Search parameter, supports like search both encrypted and unencrypted |\n| user_email | String | N | User email, supports like search both encrypted and unencrypted |\n| user_phone | String | N | User Phone for Advance Search parameter, supports like search both encrypted and unencrypted |\n| user_department | String | N | User Department for Advance Search parameter, supports like search on unencrypted and exact search on encrypted |\n| user_access_group_ids | String | N | User access group id for advance search parameter, supports multiple value with format String with Delimiter , i.e 1,2,3.  <br>\\* = User(s) who have any AG.  <br>void = User(s) who does not belong to any AG. |\n| user_title | String | N | User title for advance search parameter, supports like search on unencrypted and exact search on encrypted |\n| user_card | String | N | User card ID |\n| user_status | Boolean | N | User status for advance search parameter |\n| user_operator_level_id | String | Y | User operator level id for Advance Search parameter |\n| user_custom_field_1 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| user_custom_field_2 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| user_custom_field_3 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| user_custom_field_4 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| user_custom_field_5 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| user_custom_field_6 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| user_custom_field_7 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| user_custom_field_8 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| user_custom_field_9 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| user_custom_field_10 | String | N | Custom fields for advance search parameter support like search on unencrypted and exact search on encrypted |\n| order_by | String | N | Order, will accept with format properties:false, for example if we want to order by name, it will be user_name:false. false = ASCENDING and true = DESCENDING |\n\n#### Response Example:\n\n``` json\n{\n  \"UserCollection\" : {\n    \"total\" : 1,\n    \"rows\" : [ {\n      \"user_id\" : \"45\",\n      \"name\" : \"Suprema\",\n      \"email\" : \"one@suprema.com\",\n      \"department\" : \"Your Dept\",\n      \"user_title\" : \"Your Title\",\n      \"phone\" : \"085697068105\",\n      \"user_group_id\" : {\n        \"id\" : 1004,\n        \"name\" : \"user group1\"\n      },\n      \"operator_level\" : \"User\",\n      \"fingerprint_template_count\" : 0,\n      \"face_count\" : 0,\n      \"visual_face_count\" : 0,\n      \"mobile_count\" : 0,\n      \"qr_count\" : 0,\n      \"card_count\" : 1,\n      \"start_datetime\" : \"2001-01-01T00:00:00\",\n      \"expiry_datetime\" : \"2037-12-31T23:59:00\",\n      \"last_modified\" : 5,\n      \"updated_count\" : 0,\n      \"login_id\" : \"Abrar\",\n      \"disabled\" : false,\n      \"have_pin\" : true,\n      \"access_groups\" : [ {\n        \"id\" : 1,\n        \"name\" : \"access group 3\",\n        \"users\" : [ ],\n        \"user_groups\" : [ ],\n        \"access_levels\" : [ ],\n        \"floor_levels\" : [ ]\n      } ],\n      \"user_custom_fields\" : [ {\n        \"custom_field\" : {\n          \"id\" : 1,\n          \"name\" : \"CF1\",\n          \"type\" : 0,\n          \"order\" : 1\n        },\n        \"item\" : \"custom field 1\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      }, {\n        \"custom_field\" : {\n          \"id\" : 2,\n          \"name\" : \"CF2\",\n          \"type\" : 1,\n          \"order\" : 2\n        },\n        \"item\" : \"123\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      }, {\n        \"custom_field\" : {\n          \"id\" : 3,\n          \"name\" : \"CF3\",\n          \"type\" : 2,\n          \"order\" : 3\n        },\n        \"item\" : \"test1\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      }, {\n        \"custom_field\" : {\n          \"id\" : 4,\n          \"name\" : \"CF4\",\n          \"type\" : 0,\n          \"order\" : 4\n        },\n        \"item\" : \"custom field 4\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      }, {\n        \"custom_field\" : {\n          \"id\" : 5,\n          \"name\" : \"CF5\",\n          \"type\" : 1,\n          \"order\" : 5\n        },\n        \"item\" : \"456\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      }, {\n        \"custom_field\" : {\n          \"id\" : 6,\n          \"name\" : \"CF6\",\n          \"type\" : 2,\n          \"order\" : 6\n        },\n        \"item\" : \"test4\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      }, {\n        \"custom_field\" : {\n          \"id\" : 7,\n          \"name\" : \"CF7\",\n          \"type\" : 0,\n          \"order\" : 7\n        },\n        \"item\" : \"custom field 7\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      }, {\n        \"custom_field\" : {\n          \"id\" : 8,\n          \"name\" : \"CF8\",\n          \"type\" : 1,\n          \"order\" : 8\n        },\n        \"item\" : \"789\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      }, {\n        \"custom_field\" : {\n          \"id\" : 9,\n          \"name\" : \"CF9\",\n          \"type\" : 2,\n          \"order\" : 9\n        },\n        \"item\" : \"test5\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      }, {\n        \"custom_field\" : {\n          \"id\" : 10,\n          \"name\" : \"File Upload\",\n          \"type\" : 3,\n          \"order\" : 10\n        },\n        \"item\" : \"1\",\n        \"user_id\" : {\n          \"user_id\" : \"45\",\n          \"name\" : \"Suprema\"\n        }\n      } ]\n    } ]\n  },\n  \"Response\" : {\n    \"code\" : \"0\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n```\n- UserCollection : The user collection.\n    - total : total number of users\n    - rows : list of users\n        - user_id : user ID\n        - name : user name\n        - email : user email\n        - department : user department\n        - user_title : user title\n        - phone : user phone number\n        - user_group_id : user group data\n        - operator_level : operator level/permission\n        - fingerprint_template_count : count of fingerprint template\n        - face_count : face count\n        - visual_face_count : count of visual face\n        - mobile_count : count of mobile credentials\n        - qr_count : count of QR credentials\n        - card_count: count of card\n        - start_datetime : start datetime of user\n        - expiry_datetime : expiry datetime of user\n        - last_modified : last modified\n        - updated_count : updated count of user\n        - login_id : user’s login ID\n        - disabled : is user enabled or disabled\n        - have_pin : does user have pin\n        - access_groups : list of access groups\n        - user_custom_fields : user’s custom fields\n- Response : The response\n    - code : success/fail code\n\n```\n\n#### Errors:\n\nThis API uses the following error codes:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server.\n    \n\n#### Notes:\n\n- To search user who does not have a document, search custom_field order with the value \"No\" (`\"user_custom_field_#\": \"No\")`. Then the API will specify user who does not have a document by specific custom field.  \n    Conversely, fill value with \"Yes\" to find user who have a document by specific custom field.\n    \n- `user_operator_level_id` value can be -1 (None) or 0 (All) or an ID to differentiate user without Operator Level."
          },
          "response": [
            {
              "name": "Advanced Search",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"limit\": 50,\r\n    \"order_by\": \"user_id:false\",\r\n    \"user_operator_level_id\": \"0\",\r\n    \"user_access_group_ids\": \"void\",\r\n    \"user_group_ids\": []\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/users/advance_search",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "users",
                    "advance_search"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "transfer-encoding",
                  "value": "chunked"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Security-Policy",
                  "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:*  https://*.openstreetmap.org;"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json;charset=UTF-8"
                },
                {
                  "key": "Date",
                  "value": "Tue, 21 Oct 2025 07:16:44 GMT"
                },
                {
                  "key": "Referrer-Policy",
                  "value": "no-referrer"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"success\",\n        \"by\": \"web\"\n    },\n    \"UserCollection\": {\n        \"total\": 10135,\n        \"rows\": [\n            {\n                \"user_id\": \"1\",\n                \"name\": \"Administrator\",\n                \"user_group_id\": {\n                    \"id\": 1,\n                    \"name\": \"All Users\"\n                },\n                \"operator_level\": \"Administrator\",\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2037-12-31T23:59:00\",\n                \"last_modified\": 10135,\n                \"updated_count\": 0,\n                \"login_id\": \"admin\",\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"2\",\n                \"name\": \"Jhon Doe\",\n                \"email\": \"SW2_00001@gmail.com\",\n                \"department\": \"tes00000\",\n                \"user_title\": \"Pirate\",\n                \"phone\": \"614896493058\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 2,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 2,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2028-10-04T23:59:00\",\n                \"last_modified\": 10321,\n                \"updated_count\": 41,\n                \"disabled\": false,\n                \"have_pin\": true,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"3\",\n                \"name\": \"김승제_02(인증O)\",\n                \"email\": \"SW2_00002@gmail.com\",\n                \"phone\": \"065656565655\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10182,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"4\",\n                \"name\": \"김승제_03(인증O)\",\n                \"email\": \"SW2_00003@gmail.com\",\n                \"phone\": \"206223860240\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10183,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"5\",\n                \"name\": \"김승제_04(인증O)\",\n                \"email\": \"SW2_00004@gmail.com\",\n                \"phone\": \"663140055253\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10184,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"6\",\n                \"name\": \"김승제_05(인증O)\",\n                \"email\": \"SW2_00005@gmail.com\",\n                \"phone\": \"604911328897\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2022-10-03T23:59:00\",\n                \"last_modified\": 10185,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"7\",\n                \"name\": \"김승제_06(인증O)\",\n                \"email\": \"SW2_00006@gmail.com\",\n                \"phone\": \"444766162404\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10186,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"8\",\n                \"name\": \"김승제_07\",\n                \"email\": \"SW2_00007@gmail.com\",\n                \"phone\": \"797484405445\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10187,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"12\",\n                \"name\": \"김승제_11(인증O)\",\n                \"email\": \"SW2_00011@gmail.com\",\n                \"phone\": \"931057577421\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10188,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"13\",\n                \"name\": \"김승제_12(인증O)\",\n                \"email\": \"SW2_00012@gmail.com\",\n                \"phone\": \"805878027395\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10189,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"14\",\n                \"name\": \"Adhiim Oddbit\",\n                \"email\": \"SW2_00013@gmail.com\",\n                \"phone\": \"598070314528\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10190,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"15\",\n                \"name\": \"김승제_14\",\n                \"email\": \"SW2_00014@gmail.com\",\n                \"phone\": \"373865743054\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10191,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"16\",\n                \"name\": \"김승제_15\",\n                \"email\": \"SW2_00015@gmail.com\",\n                \"phone\": \"784013997532\",\n                \"user_group_id\": {\n                    \"id\": 1003,\n                    \"name\": \"■ 김승제\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2022-10-05T23:59:00\",\n                \"last_modified\": 10192,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"17\",\n                \"name\": \"서기원_01(인증O)\",\n                \"email\": \"SW1_00001@gmail.com\",\n                \"phone\": \"324340754817\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10193,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"18\",\n                \"name\": \"서기원_02(인증O)\",\n                \"email\": \"SW1_00002@gmail.com\",\n                \"phone\": \"186828860430\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10194,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"19\",\n                \"name\": \"서기원_03(인증O)\",\n                \"email\": \"SW1_00003@gmail.com\",\n                \"phone\": \"788647228504\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10195,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"20\",\n                \"name\": \"서기원_04(인증O)\",\n                \"email\": \"SW1_00004@gmail.com\",\n                \"phone\": \"433930816662\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2022-10-02T23:59:00\",\n                \"last_modified\": 10196,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"21\",\n                \"name\": \"서기원_05(인증O)\",\n                \"email\": \"SW1_00005@gmail.com\",\n                \"phone\": \"628071760400\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10197,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"22\",\n                \"name\": \"서기원_06(인증O)\",\n                \"email\": \"SW1_00006@gmail.com\",\n                \"phone\": \"698661953074\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10198,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"23\",\n                \"name\": \"서기원_07(인증O)\",\n                \"email\": \"SW1_00007@gmail.com\",\n                \"phone\": \"491007106892\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10199,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"24\",\n                \"name\": \"서기원_08\",\n                \"email\": \"SW1_00008@gmail.com\",\n                \"phone\": \"529397859811\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10200,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"25\",\n                \"name\": \"서기원_09\",\n                \"email\": \"SW1_00009@gmail.com\",\n                \"phone\": \"993859347087\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10201,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"26\",\n                \"name\": \"서기원_10\",\n                \"email\": \"SW1_00010@gmail.com\",\n                \"phone\": \"882168144196\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10202,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"27\",\n                \"name\": \"서기원_11\",\n                \"email\": \"SW1_00011@gmail.com\",\n                \"phone\": \"448098776805\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10203,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"28\",\n                \"name\": \"서기원_12\",\n                \"email\": \"SW1_00012@gmail.com\",\n                \"phone\": \"453156164902\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10204,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"29\",\n                \"name\": \"서기원_13\",\n                \"email\": \"SW1_00013@gmail.com\",\n                \"phone\": \"904878037348\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10205,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"30\",\n                \"name\": \"서기원_14\",\n                \"email\": \"SW1_00014@gmail.com\",\n                \"phone\": \"691116960757\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10206,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"31\",\n                \"name\": \"서기원_15\",\n                \"email\": \"SW1_00015@gmail.com\",\n                \"phone\": \"119079936877\",\n                \"user_group_id\": {\n                    \"id\": 1016,\n                    \"name\": \"■ 서기원\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10207,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"32\",\n                \"name\": \"김창영_01_왼중지(인증O)\",\n                \"email\": \"SW3_00001@gmail.com\",\n                \"phone\": \"619414384168\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10208,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"33\",\n                \"name\": \"김창영_02_왼검지(인증O)\",\n                \"email\": \"SW3_00002@gmail.com\",\n                \"phone\": \"398967471181\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10209,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"34\",\n                \"name\": \"김창영_03_왼엄지(인증O)\",\n                \"email\": \"SW3_00003@gmail.com\",\n                \"phone\": \"609809912216\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10210,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"35\",\n                \"name\": \"김창영_04\",\n                \"email\": \"SW3_00004@gmail.com\",\n                \"phone\": \"386337906906\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10211,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"36\",\n                \"name\": \"김창영_05\",\n                \"email\": \"SW3_00005@gmail.com\",\n                \"phone\": \"860662644222\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10212,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"37\",\n                \"name\": \"김창영_06\",\n                \"email\": \"SW3_00006@gmail.com\",\n                \"phone\": \"163147046712\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10213,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"38\",\n                \"name\": \"김창영_07\",\n                \"email\": \"SW3_00007@gmail.com\",\n                \"phone\": \"426084991535\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10214,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"39\",\n                \"name\": \"김창영_08\",\n                \"email\": \"SW3_00008@gmail.com\",\n                \"phone\": \"101916038422\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10215,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"40\",\n                \"name\": \"김창영_09\",\n                \"email\": \"SW3_00009@gmail.com\",\n                \"phone\": \"958089145920\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10216,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"41\",\n                \"name\": \"김창영_10\",\n                \"email\": \"SW3_00010@gmail.com\",\n                \"phone\": \"402418951322\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10217,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"42\",\n                \"name\": \"김창영_11\",\n                \"email\": \"SW3_00011@gmail.com\",\n                \"phone\": \"411492336295\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10218,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"43\",\n                \"name\": \"김창영_12\",\n                \"email\": \"SW3_00012@gmail.com\",\n                \"phone\": \"461550728181\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10219,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"44\",\n                \"name\": \"김창영_13\",\n                \"email\": \"SW3_00013@gmail.com\",\n                \"phone\": \"266295366915\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10220,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"45\",\n                \"name\": \"김창영_14\",\n                \"email\": \"SW3_00014@gmail.com\",\n                \"phone\": \"857019225371\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10221,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"46\",\n                \"name\": \"김창영_15\",\n                \"email\": \"SW3_00015@gmail.com\",\n                \"phone\": \"928568287596\",\n                \"user_group_id\": {\n                    \"id\": 1032,\n                    \"name\": \"■ 김창영\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10222,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"47\",\n                \"name\": \"$형7805967\",\n                \"email\": \"idiu443047@gmail.com\",\n                \"phone\": \"748078071879\",\n                \"user_group_id\": {\n                    \"id\": 1049,\n                    \"name\": \"$형\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10135,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"48\",\n                \"name\": \"마4290901\",\n                \"email\": \"soto616303@gmail.com\",\n                \"phone\": \"146995249151\",\n                \"user_group_id\": {\n                    \"id\": 1051,\n                    \"name\": \"마\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10135,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"49\",\n                \"name\": \"용3278232\",\n                \"email\": \"ebap511596@gmail.com\",\n                \"phone\": \"573513271046\",\n                \"user_group_id\": {\n                    \"id\": 1053,\n                    \"name\": \"용\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10135,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"50\",\n                \"name\": \"피8739686\",\n                \"email\": \"lqko618654@gmail.com\",\n                \"phone\": \"753183165029\",\n                \"user_group_id\": {\n                    \"id\": 1055,\n                    \"name\": \"피\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10135,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"51\",\n                \"name\": \"$구7811332\",\n                \"email\": \"cgce722304@gmail.com\",\n                \"phone\": \"370316064822\",\n                \"user_group_id\": {\n                    \"id\": 1057,\n                    \"name\": \"$구\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10135,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"52\",\n                \"name\": \"Sophia8036845\",\n                \"email\": \"cizi869654@gmail.com\",\n                \"phone\": \"302970614680\",\n                \"user_group_id\": {\n                    \"id\": 1059,\n                    \"name\": \"Sophia\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10135,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            },\n            {\n                \"user_id\": \"53\",\n                \"name\": \"Oliva5687491\",\n                \"email\": \"bgxz238522@gmail.com\",\n                \"phone\": \"658571917052\",\n                \"user_group_id\": {\n                    \"id\": 1061,\n                    \"name\": \"Oliva\"\n                },\n                \"fingerprint_template_count\": 0,\n                \"face_count\": 0,\n                \"visual_face_count\": 0,\n                \"mobile_count\": 0,\n                \"qr_count\": 0,\n                \"card_count\": 0,\n                \"start_datetime\": \"2001-01-01T00:00:00\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00\",\n                \"last_modified\": 10135,\n                \"updated_count\": 0,\n                \"disabled\": false,\n                \"have_pin\": false,\n                \"have_lock_override\": false\n            }\n        ]\n    }\n}"
            }
          ]
        },
        {
          "name": "Batch Edit with Advanced Search",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"start_datetime\": \"2001-01-02T00:00:00.00Z\",\r\n        \"expiry_datetime\": \"2035-12-31T23:59:00.00Z\",\r\n        \"disabled\": \"true\",\r\n        \"user_group_id\": {\r\n            \"name\": \"test 2\",\r\n            \"id\": 242894,\r\n            \"parent_id\": {\r\n                \"id\": 1\r\n            }\r\n        },\r\n        \"permission\": {\r\n            \"id\": 2\r\n        },\r\n        \"access_groups\": [\r\n            {\r\n                \"id\": \"14\"\r\n            }\r\n        ]\r\n    },\r\n    \"adv_criteria\": {\r\n        \"limit\": 50,\r\n        \"order_by\": \"user_id:false\",\r\n        \"user_group_ids\": [\r\n            242790\r\n        ],\r\n        \"user_id\": \"12\",\r\n        \"user_email\": \"rizki12@gmail.com\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users?adv=mode1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users"
              ],
              "query": [
                {
                  "key": "adv",
                  "value": "mode1",
                  "description": "Use this to enable Advanced Search query result."
                }
              ]
            },
            "description": "By adding `adv=mode1` on Query Parameter, Batch Edit feature can works with Advanced Search result.\n\nThe API works by query users based on adv_criteria object, then apply new value based on input in User object.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| User | Object | Y | User data to change, existing payload |\n| adv_criteria | Object | Y | Advanced Search criteria, this is required for searching user data that want to be changed |\n| adv_criteria.limit | Number | Y | Advanced Search search result limit |\n| adv_criteria.order_by | String | Y | Advanced Search search result order |\n| adv_criteria.user_group_id | Number | N | User Group ID to search, this is specifically for when clicking leftmost user group and do Advanced Search |\n| adv_criteria.user_group_ids | Array | N | List of User Group IDs to search, this field value is from Advanced Search's search form |\n| adv_criteria.user_id | String | N | User ID to search |\n| adv_criteria.user_email | String | N | Email to search |\n| adv_criteria.user_access_group_ids | String | N | List of access groups to search (format : 17,18) |\n| adv_criteria.user_operator_level_id | Number | Y | Operator Level ID to search. Value : 0 = user with all operator level, -1 = user with no operator level, else ID of operator level |\n| adv_criteria.user_department | String | N | Department of user to search |\n| adv_criteria.user_title | String | N | Title of user to search |\n| adv_criteria.user_card | String | N | User card ID to search |\n| adv_criteria.user_custom_field_1 until adv_criteria.user_custom_field_10 | String | N | User custom fields to search |\n| adv_criteria.user_status | String | N | User status to search. false = Active, true = Inactive |\n\n#### Response Example:\n\n``` json\n{\n    \"FailedUserCollection\": {\n        \"total\": \"0\",\n        \"rows\": \"\"\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https:\\/\\/support.supremainc.com\\/en\\/support\\/home\",\n        \"message\": \"Success\"\n    }\n}\n\n```\n\n#### Response Properties:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| FailedUserCollection | Object | List of failed user to edit |\n| Response | Object | Response from backend |\n| Response.code | String | Indicate that the request is failed or not (0 is success, other is failed) |\n| Response.link | String | Suprema link |\n| Response.message | String | Success or failed message from backend |"
          },
          "response": []
        },
        {
          "name": "List All User v2",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"limit\": 0,\r\n    \"search_text\": null,\r\n    \"user_group_id\": \"1\",\r\n    \"order_by\": \"user_id:false\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/users/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "users",
                "search"
              ]
            },
            "description": "This API is used to list all users recorded on Bio Star X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| limit | Number | Y | Limit response record(s) by the value specified on this parameter |\n| search_text | String | N | Search record(s) with the text specified on this parameter. Default value: null |\n| user_group_id | Number | N | Filter response record(s) according to user_group_id specified on this parameter |\n| order_by | String | N | Order the response record(s) by the User parameter such as user_id or name. False for ascending, True for descending. |\n\n#### Known errors:\n\n- At least one parameter must exist\n    \n- Using unavailable user_group_id will show empty response"
          },
          "response": []
        },
        {
          "name": "List All User",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/users?group_id=1&limit=0&offset=0&order_by=user_id:false&last_modified=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users"
              ],
              "query": [
                {
                  "key": "group_id",
                  "value": "1",
                  "description": "Filter response record(s) according to the group_id specified on this parameter. Use GET /api/user_groups to list all User Groups. Default value: 1 to show all."
                },
                {
                  "key": "limit",
                  "value": "0",
                  "description": "Limit response record(s) by the amount specified on this parameter. 0 for show all."
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Shift response record(s) by the amount specified on this parameter. default value = 0. Ex: If you have 10 records, put value 5 on limit, and when you put value 5 on offset, you will get record 6 to 10 on the result."
                },
                {
                  "key": "order_by",
                  "value": "user_id:false",
                  "description": "Order the response record(s) by the User parameter such as user_id or name. False for ascending, True for descending."
                },
                {
                  "key": "last_modified",
                  "value": "0",
                  "description": "Show response record(s) with User last_modified value which is equal or greater than this parameter value."
                }
              ]
            },
            "description": "This API is used to list users which is recorded on BioStar X.\n\n#### Known errors:\n\n- Putting \"/\" at the end of the endpoint\n    \n- Using group_id which doesn't exist will return success but no records\n    \n\nNote: This API is deprecated in BioStar 2 v2.8.12, please use `/api/v2/users/search` instead."
          },
          "response": []
        },
        {
          "name": "View a User's Details",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "if (pm.iterationData.get(\"iterIDVal\") === undefined) {\r",
                  "    pm.collectionVariables.set(\"iterIDVal\", 2);\r",
                  "} else {\r",
                  "    val = pm.iterationData.get(\"iterIDVal\");\r",
                  "    pm.collectionVariables.set(\"iterIDVal\", val);\r",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{iterIDVal}}",
                  "description": "ID of the User"
                }
              ]
            },
            "description": "This API is used to view a user's details which is recorded on BioStar X.\n\n#### Known errors:\n\n- Putting \"/\" at the end of the endpoint\n    \n- Using User ID which doesn't exist"
          },
          "response": []
        },
        {
          "name": "List All Operator Level",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/permissions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "permissions"
              ]
            },
            "description": "This API is used to view all operator level as recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "List User Fields",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/users/csv_option",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "csv_option"
              ]
            },
            "description": "This API is used to list user fields which can be processed as CSV."
          },
          "response": []
        },
        {
          "name": "Download CSV File",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/download/:csv_filename",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "download",
                ":csv_filename"
              ],
              "variable": [
                {
                  "key": "csv_filename",
                  "value": "User_Import_Error_20220124T143708.csv"
                }
              ]
            },
            "description": "This API is used to get the content of exported .csv file.  \nFile content will be shown on the response of the API.\n\nUsage:  \nAfter `POST /api/users/csv_export`, get the URI from the response and use it as PATH parameter as shown on the example."
          },
          "response": []
        },
        {
          "name": "Upload User File (CSV/TGZ) to BioStar 2 Server",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": "/C:/Users/user/Desktop/BioStar2_20220124_173247.tgz"
                }
              ]
            },
            "url": {
              "raw": "{{baseUrl}}/api/attachments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "attachments"
              ]
            },
            "description": "This API is used to upload a file to BioStar X Server.\n\nUsage of this API is to upload a .csv or .tgz file to BioStar 2 Server Installation path, which after the file can be further processed for importing User Data to the database through `POST /api/users/csv_import` or `POST /api/users/data_import`.\n\nUploaded file will be located on: {{BioStar X Installation Path}}\\\\nginx\\\\html\\\\download\n\nDo note that if there's any file with the same name, it will be overwritten"
          },
          "response": []
        },
        {
          "name": "Export User Data as CSV",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"Query\": {}\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/csv_export?id=1+2+3",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "csv_export"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "1+2+3",
                  "description": "ID of the Users to export. Use * to export all users. To select multiple users use plus sign (+)  or space ( ) as separator, ex: 1001+1002+1009."
                }
              ]
            },
            "description": "This API is used to export User Data as .csv file.\n\nThis feature is useful when you create users in bulk or when you transfer users to another 3rd party systems.\n\nThe location of the exported file is on: {{BioStar X Installation Folder}}\\\\nginx\\\\html\\\\download\n\nThere is no input required on the BODY parameter. But it is required to put Query parameter to run the API correctly.\n\nResult will be sorted by ID."
          },
          "response": []
        },
        {
          "name": "Export User Data as CSV (File Upload Example)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"offset\": 0,\r\n        \"group_by\": 1,\r\n        \"columns\": [\r\n            \"user_id\",\r\n            \"name\",\r\n            \"email\",\r\n            \"user_group_id\",\r\n            \"access_groups\",\r\n            \"start_datetime\",\r\n            \"expiry_datetime\",\r\n            \"operator_level\",\r\n            \"fingerprint_template_count\",\r\n            \"face_count\",\r\n            \"visual_face_count\",\r\n            \"card_count\",\r\n            \"have_pin\",\r\n            \"qr_count\",\r\n            \"mobile_count\",\r\n            \"disabled\"\r\n        ],\r\n        \"headers\": [\r\n            \"ID\",\r\n            \"Name\",\r\n            \"Email\",\r\n            \"Group\",\r\n            \"Access Group\",\r\n            \"Start datetime\",\r\n            \"End datetime\",\r\n            \"Operator Level\",\r\n            \"Fingerprint\",\r\n            \"Face\",\r\n            \"Visual Face\",\r\n            \"Card\",\r\n            \"PIN\",\r\n            \"QR/Barcode\",\r\n            \"Mobile Access Card\",\r\n            \"Status\"\r\n        ]\r\n    },\r\n    \"adv_criteria\": {\r\n        \"user_group_ids\": [],\r\n        \"user_group_id\": \"1\",\r\n        \"user_operator_level_id\": \"0\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/csv_export?id=1+2+3&adv=mode1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "csv_export"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "1+2+3",
                  "description": "ID of the Users to export. Use * to export all users. To select multiple users use plus sign (+)  or space ( ) as separator, ex: 1001+1002+1009."
                },
                {
                  "key": "adv",
                  "value": "mode1",
                  "description": "Use this to enable Advanced Search query result."
                }
              ]
            },
            "description": "This example shows how to use this API to show File Upload Custom Field information on CSV Export.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| Query | Object | Y | Data criteria to search |\n| Query.offset | Number | Y | Data offset |\n| Query.group_by | Number | Y | Group by what column |\n| Query.columns | String | Y | Object to retrieve data |\n| Query.headers | String | Y | Column name to show in CSV/PDF |\n| adv_criteria | Object | Y | See `Batch Edit with Advanced Search` for details |\n\n#### Response Example:\n\n``` json\n{\n  \"File\" : {\n    \"uri\" : \"User_20241030_7f554f6983034c8eb1b42076f68e488b.csv\"\n  },\n  \"Response\" : {\n    \"code\" : \"0\",\n    \"link\" : \"https://support.supremainc.com/en/support/home\",\n    \"message\" : \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| File | Object | File object |\n| File.uri | String | Exported file name |\n| Response | Object | Response object |\n| Response.code | Number | Indicate success or fail |\n| Response.link | String | Suprema link |\n| Response.message | String | Success / error message |"
          },
          "response": []
        },
        {
          "name": "Import User Data from CSV",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"File\": {\r\n        \"uri\": \"User_Test.csv\",\r\n        \"fileName\": \"User_Test.csv\"\r\n    },\r\n    \"CsvOption\": {\r\n        \"start_line\": 2,\r\n        \"import_option\": 1\r\n    },\r\n\"Query\": {\r\n        \"headers\": [\r\n            \"user_id\",\r\n            \"name\",\r\n            \"department\",\r\n            \"user_title\",\r\n            \"phone\",\r\n            \"email\",\r\n            \"user_group\",\r\n            \"start_datetime\",\r\n            \"expiry_datetime\",\r\n            \"csn\",\r\n            \"\",\r\n            \"\",\r\n            \"\",\r\n            \"qr\",\r\n            \"26 bit SIA Standard-H10301\",\r\n            \"HID 37 bit-H10302\",\r\n            \"\",\r\n            \"\",\r\n            \"\",\r\n            \"Purpose\",\r\n            \"License Plate Number\",\r\n            \"Hello\",\r\n            \"Hair Color\",\r\n            \"Hair Color 2\",\r\n            \"\",\r\n            \"\",\r\n            \"\"\r\n        ],\r\n        \"columns\": [\r\n            \"user_id\",\r\n            \"name\",\r\n            \"department\",\r\n            \"user_title\",\r\n            \"phone\",\r\n            \"email\",\r\n            \"user_group\",\r\n            \"start_datetime\",\r\n            \"expiry_datetime\",\r\n            \"csn\",\r\n            \"mobile_start_datetime\",\r\n            \"mobile_expiry_datetime\",\r\n            \"csn_mobile\",\r\n            \"qr\",\r\n            \"26 bit SIA Standard-H10301\",\r\n            \"HID 37 bit-H10302\",\r\n            \"HID 37 bit-H10304\",\r\n            \"HID Corporate 1000\",\r\n            \"HID Corporate 1000 48bit\",\r\n            \"Purpose\",\r\n            \"License Plate Number\",\r\n            \"Hello\",\r\n            \"Hair Color\",\r\n            \"Hair Color 2\",\r\n            \"face_image_file1\",\r\n            \"face_image_file2\",\r\n            \"pin\"\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/csv_import",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "csv_import"
              ]
            },
            "description": "This API is used to import User Data from a .csv file to the BioStar 2 database.\n\nTo run this API successfully, it is imperative to run POST /api/attachments first to upload the .csv file to the server install path.\n\nAfter .csv file got uploaded to the server, put the filename value from the above API to the uri and fileName parameter on this API.\n\nBODY parameters on this API:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| File:uri | String | Y | Path of the .csv file |\n| File:fileName | String | Y | File Name of the .csv file |\n| CsvOption |  | Y | Container for available importing options |\n| :start_line | Number | Y | Specify row number to start data import |\n| :import_option | Number | Y | Options when same ID exist in BioStar 2: 1=Preserve Data, 2=Overwrite Data |\n| Query:headers | Array | Y | List of fields on .csv file. Number of fields should match with system. Use GET /api/users/csv_option to see system fields.  <br>Use GET /download/:csv_filename to see the content of the intended .csv file. |\n| Query:columns | Array | Y | List of fields on the BioStar 2. Use GET /api/users/csv_option to get this list. |\n\nFields listed on Query parameter are also used for field mapping between .csv file and BioStar 2 database.\n\nFor example field user_id on Query:headers (.csv) will be matched with the first field of Query:columns (BioStar 2). To change this mapping, adjust the sequence on Query:headers as desired (eg. exchange field department with user_id so the value of department will be used on user_id on BioStar 2).\n\nTo skip a field from mapping, put empty string (\"\") on the intended field.\n\nIf there's no issue on the import process, the API will shows \"Success\" response.  \nIf there's issue (duplicate email, etc.), the response will show that the \"Request is successful but partially\" and will include a filename which contain records that caused the errors which can be downloaded by using GET /download/:csv_filename\n\nIf the CSV file to import contains data for custom user fields and the fields do not exist on the server, then the data for the fields will be ignored during the import process.\n\nTo enter user information in a language other than English or Korean, save the CSV file in UTF-8 format."
          },
          "response": []
        },
        {
          "name": "Data File Export",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"adv_criteria\": {\r\n        \"limit\": 50,\r\n        \"order_by\": \"user_id:false\",\r\n        \"user_group_ids\": [\r\n            1121\r\n        ]\r\n    },\r\n    \"device_type\": 35,\r\n    \"group_id\": 1\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/data_export?id=14&adv=mode1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "data_export"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "14",
                  "description": "ID of the user which will be exported. Use space as separator between IDs when exporting multiple user."
                },
                {
                  "key": "adv",
                  "value": "mode1",
                  "description": "Use this to enable Advanced Search query result."
                }
              ]
            },
            "description": "You can store the data file on external storage (USB) and import to BioStar 2 or device. Up to 500,000 users can be moved from server to device or from device to device.\n\n- The exported data file from devices using older firmware version cannot be imported into BioStar 2. Make sure always use the latest version of firmware.\n    \n- If you use BioStar 2.8.10 or later, data exported from the previous version of BioStar 2 cannot be imported.\n    \n- If you use BioStar 2.8.10 or later, it is impossible to read data from a device that are using older firmware version. Upgrade the device’s firmware to a compatible version. Compatible devices and firmware versions are as follows:\n    \n    - BioStation 2 FW 1.9.0 or later > device_type: 8\n        \n    - BioStation A2 FW 1.8.0 or later > device_type: 9\n        \n    - FaceStation 2 FW 1.4.0 or later > device_type: 10\n        \n    - FaceStation F2 FW 1.0.0 or later > device_type: 29\n        \n    - X-Station 2 FW 1.0.0 or later > device_type: 32\n        \n- If the fingerprint template format is different, the data file cannot be imported. For example, the data file exported from a device which uses the Suprema fingerprint template format cannot be imported into a device which uses the ISO fingerprint template format.\n    \n- When importing user data with visual faces enrolled from FaceStation F2, the existing data will be retained if there are already visual face data enrolled on BioStar 2 via Upload Image or a mobile device.\n    \n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| device_type | Number | Y | Device type which the exported data will be applied to |\n| group_id | Number | Y | Group ID of the device. Default value=1 |\n| adv_criteria | Object | Y | See Batch Edit with Advanced Search for adv_criteria details. |\n\n- The exported data file includes the profile photo, user ID, name, period, access group, PIN, auth. mode, credentials (face, fingerprint, card, mobile access card, visual face, BioStar 2 QR, QR/Barcode), 1:1 security level.\n    \n- You can export visual face data directly registered from the device only. It is not possible to export the data registered with the other methods, such as image file upload, CSV import, and mobile devices.\n    \n- Be sure that the device is selected correctly. Otherwise, the device cannot recognize the data file.\n    \n\n#### Response Example:\n\n``` json\n{\n  \"File\" : {\n    \"uri\" : \"BioStar2_20241030_093821.tgz\"\n  },\n  \"Response\" : {\n    \"code\" : \"0\",\n    \"link\" : \"https://support.supremainc.com/en/support/home\",\n    \"message\" : \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| File | Object | File object |\n| File.uri | String | Exported file name |\n| Response | Object | Response object |\n| Response.code | Number | Indicates success or failure |\n| Response.link | String | Suprema link |\n| Response.message | String | Success or error message |\n\n#### Changes:\n\n- v2.9.8:\n    \n    - Added `adv` Query Parameter for enabling Advanced Search query capability.\n        \n    - Added `adv_criteria` on Body Parameter as example on how to use Advanced Search query."
          },
          "response": []
        },
        {
          "name": "Data File Import",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"file\": {\r\n        \"originalName\": \"BioStar2_20220124_173247.tgz\",\r\n        \"name\": \"BioStar2_20220124_173247.tgz\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/data_import",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "data_import"
              ]
            },
            "description": "You can store the data file on external storage (USB) and import to BioStar 2 or device. Up to 500,000 users can be moved from server to device or from device to device.\n\n*   The exported data file from devices using older firmware version cannot be imported into BioStar 2. Make sure always use the latest version of firmware.\n*   If you use BioStar 2.8.10 or later, data exported from the previous version of BioStar 2 cannot be imported.\n*   If you use BioStar 2.8.10 or later, it is impossible to read data from a device that are using older firmware version. Upgrade the device’s firmware to a compatible version. Compatible devices and firmware versions are as follows:\n    *   BioStation 2 FW 1.9.0 or later > device_type: 8\n    *   BioStation A2 FW 1.8.0 or later > device_type: 9\n    *   FaceStation 2 FW 1.4.0 or later > device_type: 10\n    *   FaceStation F2 FW 1.0.0 or later > device_type: 29\n    *   X-Station 2 FW 1.0.0 or later > device_type: 32\n*   If the fingerprint template format is different, the data file cannot be imported. For example, the data file exported from a device which uses the Suprema fingerprint template format cannot be imported into a device which uses the ISO fingerprint template format.\n*   When importing user data with visual faces enrolled from FaceStation F2, the existing data will be retained if there are already visual face data enrolled on BioStar 2 via Upload Image or a mobile device.\n    \n\nSelect the desired file (*.tgz) and then click Open.  \nA success message will appear on the screen when import successfully.\n\nUse POST /api/attachments to upload the file (.tgz) to the BioStar 2 server.  \nUse the resulting filename on the response as value on the BODY parameter.\n\nBODY parameters on this API:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| file:originalName | String | Y | Original filename of the file |\n| file:name | String | Y | Current filename of the file |"
          },
          "response": []
        },
        {
          "name": "Export User(s) as SVG with Advanced Search",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"View\": {\r\n        \"Query\": {\r\n            \"collection_name\": \"UserCollection\",\r\n            \"object\": \"query\",\r\n            \"orders\": [\r\n                {\r\n                    \"column\": \"user_id\",\r\n                    \"descending\": \"false\"\r\n                }\r\n            ]\r\n        },\r\n        \"display_fields\": [\r\n            {\r\n                \"name\": \"user_id\",\r\n                \"display_name\": \"ID\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 5\r\n            },\r\n            {\r\n                \"name\": \"name\",\r\n                \"display_name\": \"Name\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 9\r\n            },\r\n            {\r\n                \"name\": \"email\",\r\n                \"display_name\": \"Email\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 12\r\n            },\r\n            {\r\n                \"name\": \"user_group_id.name\",\r\n                \"display_name\": \"Group\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 9\r\n            },\r\n            {\r\n                \"name\": \"access_groups\",\r\n                \"display_name\": \"Access Group\",\r\n                \"display_type\": \"objects\",\r\n                \"width\": 9\r\n            },\r\n            {\r\n                \"name\": \"start_datetime\",\r\n                \"display_name\": \"Start datetime\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 7\r\n            },\r\n            {\r\n                \"name\": \"expiry_datetime\",\r\n                \"display_name\": \"End datetime\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 7\r\n            },\r\n            {\r\n                \"name\": \"operator_level\",\r\n                \"display_name\": \"Operator Level\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 9\r\n            },\r\n            {\r\n                \"name\": \"fingerprint_template_count\",\r\n                \"display_name\": \"Fingerprint\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"face_count\",\r\n                \"display_name\": \"Face\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"visual_face_count\",\r\n                \"display_name\": \"Visual Face\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"card_count\",\r\n                \"display_name\": \"Card\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"have_pin\",\r\n                \"display_name\": \"PIN\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"qr_count\",\r\n                \"display_name\": \"QR/Barcode\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"mobile_count\",\r\n                \"display_name\": \"Mobile Access Card\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"disabled\",\r\n                \"display_name\": \"Status\",\r\n                \"display_type\": \"enum\",\r\n                \"width\": 2,\r\n                \"enum\": [\r\n                    \"false=\",\r\n                    \"true=Inactive\"\r\n                ]\r\n            }\r\n        ],\r\n        \"name\": \"All Users\",\r\n        \"show_title_every_page\": false,\r\n        \"group_by_page_break\": \"false\",\r\n        \"footer_report_date\": true,\r\n        \"footer_comment\": \"Created by Administrator\",\r\n        \"footer_display_page_number\": \"true\",\r\n        \"content_type\": \"SVG\",\r\n        \"page_size\": \"A4\",\r\n        \"page_portrait\": \"false\"\r\n    },\r\n    \"adv_criteria\": {\r\n        \"user_group_ids\": [],\r\n        \"user_group_id\": \"1\",\r\n        \"user_operator_level_id\": \"0\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/report?use_centigrade=true&adv=mode1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "report"
              ],
              "query": [
                {
                  "key": "use_centigrade",
                  "value": "true"
                },
                {
                  "key": "adv",
                  "value": "mode1",
                  "description": "Use this to enable Advanced Search query result."
                }
              ]
            },
            "description": "This API is used to export user data as SVG which was collected using Advanced Search query.\n\n#### BODY Parameter:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| View | Object | Yes | Parent object |\n| Query | Object | Yes | User data criteria to query (not used; only mandatory fields are supplied) |\n| display_fields | Array | Yes | List of columns to show in SVG/PDF file |\n| display_fields.name | String | Yes | Object name to retrieve data |\n| display_fields.display_name | String | Yes | Column name to show in SVG/PDF file |\n| display_fields.display_type | String | Yes | Display as this data type |\n| display_fields.width | String | Yes | Column width in SVG/PDF file |\n| display_fields.enum | Array | No | Enum list |\n| View.name | String | Yes | Report name |\n| View.show_title_every_page | Boolean | Yes | Indicates if the report will show title on every page |\n| View.group_by_page_break | Boolean | Yes | Indicates if the report will group by page break |\n| View.footer_report_date | Boolean | Yes | Indicates whether to show the date in the report footer |\n| View.footer_comment | String | Yes | Footer comment |\n| View.footer_display_page_number | Boolean | Yes | Indicates if the report will show page numbers |\n| View.content_type | String | Yes | Report file type (e.g., SVG or PDF) |\n| View.page_size | String | Yes | Report page size (e.g., A4 or Letter) |\n| View.page_portrait | Boolean | Yes | Report page orientation (true = portrait, false = landscape) |\n| View.adv_criteria | Object | Yes | See Batch Edit with Advanced Search for adv_criteria details. |\n\n#### Response Example:\n\n``` json\n{\n  \"FileCollection\" : {\n    \"total\" : \"4\",\n    \"rows\" : [ {\n      \"uri\" : \"/report/list_20241030093818_2566_p1.svg\",\n      \"type\" : \"image/svg+xml\"\n    }, {\n      \"uri\" : \"/report/list_20241030093818_2566_p2.svg\",\n      \"type\" : \"image/svg+xml\"\n    }, {\n      \"uri\" : \"/report/list_20241030093818_2566_p3.svg\",\n      \"type\" : \"image/svg+xml\"\n    }, {\n      \"uri\" : \"/report/list_20241030093818_2566_p4.svg\",\n      \"type\" : \"image/svg+xml\"\n    } ]\n  },\n  \"Response\" : {\n    \"code\" : \"0\",\n    \"link\" : \"https://support.supremainc.com/en/support/home\",\n    \"message\" : \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n| **Parameter** | **Type** | Description |\n| --- | --- | --- |\n| FileCollection | Object | File collection |\n| FileCollection.total | Number | Total number of files |\n| FileCollection.rows | Array | List of files |\n| FileCollection.rows.uri | String | File location |\n| FileCollection.rows.type | String | File MIME type |\n| Response | Object | Response object |\n| Response.code | Number | Indicates success or failure |\n| Response.link | String | Suprema link |\n| Response.message | String | Success or error message |"
          },
          "response": []
        },
        {
          "name": "Export User(s) as PDF with Advanced Search",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"View\": {\r\n        \"Query\": {\r\n            \"collection_name\": \"UserCollection\",\r\n            \"object\": \"query\",\r\n            \"orders\": [\r\n                {\r\n                    \"column\": \"user_id\",\r\n                    \"descending\": \"false\"\r\n                }\r\n            ]\r\n        },\r\n        \"display_fields\": [\r\n            {\r\n                \"name\": \"user_id\",\r\n                \"display_name\": \"ID\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 5\r\n            },\r\n            {\r\n                \"name\": \"name\",\r\n                \"display_name\": \"Name\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 9\r\n            },\r\n            {\r\n                \"name\": \"email\",\r\n                \"display_name\": \"Email\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 12\r\n            },\r\n            {\r\n                \"name\": \"user_group_id.name\",\r\n                \"display_name\": \"Group\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 9\r\n            },\r\n            {\r\n                \"name\": \"access_groups\",\r\n                \"display_name\": \"Access Group\",\r\n                \"display_type\": \"objects\",\r\n                \"width\": 9\r\n            },\r\n            {\r\n                \"name\": \"start_datetime\",\r\n                \"display_name\": \"Start datetime\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 7\r\n            },\r\n            {\r\n                \"name\": \"expiry_datetime\",\r\n                \"display_name\": \"End datetime\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 7\r\n            },\r\n            {\r\n                \"name\": \"operator_level\",\r\n                \"display_name\": \"Operator Level\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 9\r\n            },\r\n            {\r\n                \"name\": \"fingerprint_template_count\",\r\n                \"display_name\": \"Fingerprint\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"face_count\",\r\n                \"display_name\": \"Face\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"visual_face_count\",\r\n                \"display_name\": \"Visual Face\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"card_count\",\r\n                \"display_name\": \"Card\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"have_pin\",\r\n                \"display_name\": \"PIN\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"qr_count\",\r\n                \"display_name\": \"QR/Barcode\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"mobile_count\",\r\n                \"display_name\": \"Mobile Access Card\",\r\n                \"display_type\": \"string\",\r\n                \"width\": 4\r\n            },\r\n            {\r\n                \"name\": \"disabled\",\r\n                \"display_name\": \"Status\",\r\n                \"display_type\": \"enum\",\r\n                \"width\": 2,\r\n                \"enum\": [\r\n                    \"false=\",\r\n                    \"true=Inactive\"\r\n                ]\r\n            }\r\n        ],\r\n        \"name\": \"All Users\",\r\n        \"show_title_every_page\": false,\r\n        \"group_by_page_break\": \"false\",\r\n        \"footer_report_date\": true,\r\n        \"footer_comment\": \"Created by Administrator\",\r\n        \"footer_display_page_number\": \"true\",\r\n        \"content_type\": \"PDF\",\r\n        \"page_size\": \"A4\",\r\n        \"page_portrait\": \"false\"\r\n    },\r\n    \"adv_criteria\": {\r\n        \"user_group_ids\": [],\r\n        \"user_group_id\": \"1\",\r\n        \"user_operator_level_id\": \"0\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/report?use_centigrade=true&adv=mode1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "report"
              ],
              "query": [
                {
                  "key": "use_centigrade",
                  "value": "true"
                },
                {
                  "key": "adv",
                  "value": "mode1",
                  "description": "Use this to enable Advanced Search query result."
                }
              ]
            },
            "description": "This API is used to export user data as SVG which was collected using Advanced Search query.\n\n#### BODY Parameter:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| View | Object | Yes | Parent object |\n| Query | Object | Yes | User data criteria to query (not used; only mandatory fields are supplied) |\n| display_fields | Array | Yes | List of columns to show in SVG/PDF file |\n| display_fields.name | String | Yes | Object name to retrieve data |\n| display_fields.display_name | String | Yes | Column name to show in SVG/PDF file |\n| display_fields.display_type | String | Yes | Display as this data type |\n| display_fields.width | String | Yes | Column width in SVG/PDF file |\n| display_fields.enum | Array | No | Enum list |\n| View.name | String | Yes | Report name |\n| View.show_title_every_page | Boolean | Yes | Indicates if the report will show title on every page |\n| View.group_by_page_break | Boolean | Yes | Indicates if the report will group by page break |\n| View.footer_report_date | Boolean | Yes | Indicates whether to show the date in the report footer |\n| View.footer_comment | String | Yes | Footer comment |\n| View.footer_display_page_number | Boolean | Yes | Indicates if the report will show page numbers |\n| View.content_type | String | Yes | Report file type (e.g., SVG or PDF) |\n| View.page_size | String | Yes | Report page size (e.g., A4 or Letter) |\n| View.page_portrait | Boolean | Yes | Report page orientation (true = portrait, false = landscape) |\n| View.adv_criteria | Object | Yes | See Batch Edit with Advanced Search for adv_criteria details. |\n\n#### Response Example:\n\n``` json\n{\n  \"FileCollection\" : {\n    \"total\" : \"1\",\n    \"rows\" : [ {\n      \"uri\" : \"/report/list_20241030093819_7596.pdf\",\n      \"type\" : \"image/svg+xml\"\n    } ]\n  },\n  \"Response\" : {\n    \"code\" : \"0\",\n    \"link\" : \"https://support.supremainc.com/en/support/home\",\n    \"message\" : \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n| **Parameter** | **Type** | Description |\n| --- | --- | --- |\n| FileCollection | Object | File collection |\n| FileCollection.total | Number | Total number of files |\n| FileCollection.rows | Array | List of files |\n| FileCollection.rows.uri | String | File location |\n| FileCollection.rows.type | String | File MIME type |\n| Response | Object | Response object |\n| Response.code | Number | Indicates success or failure |\n| Response.link | String | Suprema link |\n| Response.message | String | Success or error message |"
          },
          "response": []
        },
        {
          "name": "View User by Account Level",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/permissions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "permissions"
              ]
            },
            "description": "This API is used to view all user permission grouped by user account level.\n\n1: Administrator  \n2: User Operator  \n3: Monitoring Operator  \n4-252: Custom Account Level  \n253: Video  \n254: TA  \n255: User  \n100000: Visitor"
          },
          "response": []
        },
        {
          "name": "Download User Data File",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/download/:exported_file",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "download",
                ":exported_file"
              ],
              "variable": [
                {
                  "key": "exported_file",
                  "value": "BioStar2_20220124_152253.tgz",
                  "description": "Filename of the data file which will be downloaded."
                }
              ]
            },
            "description": "This API is used to download User Data File from BioStar 2 Server.\n\nUse the filename which resulted from POST /api/users/data_export\n\nPut the filename to download on the PATH of the API."
          },
          "response": []
        },
        {
          "name": "Audit User Tracks",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"offset\": 0,\r\n        \"limit\": 101,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"DATE\",\r\n                \"operator\": 3,\r\n                \"values\": [\r\n                    \"2022-06-15T15:00:00.000Z\",\"2022-07-17T15:00:00.000Z\"\r\n                ]\r\n            },\r\n            {\r\n                \"column\": \"IP\",\r\n                \"operator\": 0,\r\n                \"values\": [\r\n                    \"192.168.1.5\"\r\n                ]\r\n            },\r\n            {\r\n                \"column\": \"USRID\",\r\n                \"operator\": 0,\r\n                \"values\": [\r\n                    \"Administrator(1)\"\r\n                ]\r\n            }\r\n        ],\r\n        \"total\": false\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/audit/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "audit",
                "search"
              ]
            },
            "description": "Audit trail tracks user access information as well as all the information changed in the system.\n\nBODY parameters on this API:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| offset | Number | N | Shift the response records by the specified number. |\n| limit | Number | Y | Limit the number of response records by the specified number. |\n| conditions:column | String | N | Column name which being used for filtering response records. |\n| conditions:operator | Number | N | Condition Operator  <br>EQUAL : 0  <br>NOT_EQUAL : 1  <br>CONTAINS : 2  <br>BETWEEN : 3 (\"from\",\"until\"),  <br>LIKE : 4 |\n| conditions:values | String | N | Condition value |\n| total | Boolean | N | Toggle true to only show the total number of records |"
          },
          "response": []
        },
        {
          "name": "Create/Update User Private Message",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"phrase\": \"Good morning. Set private message here.\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/users/phrase/:userId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "users",
                "phrase",
                ":userId"
              ],
              "variable": [
                {
                  "key": "userId",
                  "value": "12",
                  "description": "User ID of the user to whom the private message will be configured."
                }
              ]
            },
            "description": "This API is used to create or update User Private Message.\n\nThis API is available starting from BioStar 2 version 2.9.8.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| phrase | String | Y | Phrase which will be set as User Private Message. This has a 128-byte limit. Any phrase exceeding this will be truncated. |\n\n#### Response Example:\n\n``` json\n{\n    \"code\": \"0\",\n    \"message\": \"Successful\"\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "Delete User Private Message",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v2/users/phrase/:userId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "users",
                "phrase",
                ":userId"
              ],
              "variable": [
                {
                  "key": "userId",
                  "value": "12",
                  "description": "User ID of the user to whom the private message will be deleted."
                }
              ]
            },
            "description": "This API is used to delete User Private Message.\n\nThis API is available starting from BioStar 2 version 2.9.8.\n\n#### Response Example:\n\n``` json\n{\n    \"code\": \"0\",\n    \"message\": \"Successful\"\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "Fetch User Private Message",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v2/users/phrase/:userId",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "users",
                "phrase",
                ":userId"
              ],
              "variable": [
                {
                  "key": "userId",
                  "value": "12",
                  "description": "User ID of the user to whom the private message will be fetched."
                }
              ]
            },
            "description": "This API is used to fetch User Private Message.\n\nThis API is available starting from BioStar 2 version 2.9.8.\n\n#### Response Example:\n\n``` json\n{\n    \"user_id\": \"12\",\n    \"phrase\": \"Good morning. You're expected at meeting room 1 at 09.00\"\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "Download File from File Upload Custom Field",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/user_document/:UserID/:customFieldID",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "user_document",
                ":UserID",
                ":customFieldID"
              ],
              "variable": [
                {
                  "key": "UserID",
                  "value": "3",
                  "description": "ID of the user which have the intended file."
                },
                {
                  "key": "customFieldID",
                  "value": "5",
                  "description": "ID of the File Upload Custom Field which contain the file."
                }
              ]
            },
            "description": "This API is used to download the file which contained in a File Upload Custom Field.\n\nThis API is available starting from BioStar 2 v2.9.8.\n\nAfter receiving the response, convert the Base64 data on key `document` to file type specified on key `mimetype`.\n\n#### Response Example:\n\n``` json\n{\n    \"Data\": {\n        \"document\": \"U1c1IGlzIHRoZSBiZXN0IGRldmVsb3Blcg==\",\n        \"mimetype\": \"text/plain\",\n        \"item\": \"ACCOUNTS.TXT\"\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "View User & Group",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v2/user/filter/user_and_group",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "user",
                "filter",
                "user_and_group"
              ]
            },
            "description": "Retrieves a combined list of **user groups** and **users**, including hierarchical relationships between groups and their members.  \n  \nThis endpoint is typically used to build a **tree structure** (group → subgroup → user) for user management, filtering, or selection interfaces."
          },
          "response": [
            {
              "name": "View User & Group",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/user/filter/user_and_group",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "user",
                    "filter",
                    "user_and_group"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "transfer-encoding",
                  "value": "chunked"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Security-Policy",
                  "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:*  https://*.openstreetmap.org;"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json;charset=UTF-8"
                },
                {
                  "key": "Date",
                  "value": "Tue, 21 Oct 2025 07:12:06 GMT"
                },
                {
                  "key": "Referrer-Policy",
                  "value": "no-referrer"
                }
              ],
              "cookie": [],
              "body": "{\n  \"Response\": {\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"success\",\n    \"by\": \"web\"\n  },\n  \"UserAndGroupCollection\": {\n    \"total\": 7,\n    \"rows\": [\n      {\n        \"id\": \"userGroup-1\",\n        \"name\": \"All\",\n        \"disabled\": false,\n        \"original_id\": \"1\",\n        \"last_child\": false\n      },\n      {\n        \"id\": \"userGroup-100\",\n        \"name\": \"Sample User Group A\",\n        \"disabled\": false,\n        \"original_id\": \"100\",\n        \"parent_id\": \"userGroup-1\",\n        \"last_child\": false\n      },\n      {\n        \"id\": \"user-1001\",\n        \"name\": \"Sample User 001\",\n        \"email\": \"sample.user001@example.com\",\n        \"department\": \"Sample Department\",\n        \"title\": \"Sample Title\",\n        \"disabled\": false,\n        \"original_id\": \"1001\",\n        \"parent_id\": \"userGroup-100\",\n        \"parent_name\": \"Sample User Group A\",\n        \"user_group\": \"Sample User Group A\",\n        \"last_child\": true\n      },\n      {\n        \"id\": \"user-1002\",\n        \"name\": \"Sample User 002\",\n        \"email\": \"sample.user002@example.com\",\n        \"department\": \"Sample Department\",\n        \"title\": \"Sample Title\",\n        \"disabled\": false,\n        \"original_id\": \"1002\",\n        \"parent_id\": \"userGroup-100\",\n        \"parent_name\": \"Sample User Group A\",\n        \"user_group\": \"Sample User Group A\",\n        \"last_child\": true\n      },\n      {\n        \"id\": \"userGroup-200\",\n        \"name\": \"Sample User Group B\",\n        \"disabled\": false,\n        \"original_id\": \"200\",\n        \"parent_id\": \"userGroup-1\",\n        \"last_child\": false\n      },\n      {\n        \"id\": \"user-2001\",\n        \"name\": \"Sample User 003\",\n        \"email\": \"sample.user003@example.com\",\n        \"disabled\": false,\n        \"original_id\": \"2001\",\n        \"parent_id\": \"userGroup-200\",\n        \"parent_name\": \"Sample User Group B\",\n        \"user_group\": \"Sample User Group B\",\n        \"last_child\": true\n      },\n      {\n        \"id\": \"user-2002\",\n        \"name\": \"Sample User 004\",\n        \"email\": \"sample.user004@example.com\",\n        \"disabled\": true,\n        \"original_id\": \"2002\",\n        \"parent_id\": \"userGroup-200\",\n        \"parent_name\": \"Sample User Group B\",\n        \"user_group\": \"Sample User Group B\",\n        \"last_child\": true\n      }\n    ]\n  }\n}"
            }
          ]
        }
      ],
      "description": "This section contains all API related to Users",
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "pm.test(\"Status code is 200\", function () {",
              "    pm.response.to.have.status(200);",
              "});"
            ]
          }
        }
      ]
    },
    {
      "name": "Device Group",
      "item": [
        {
          "name": "View All Device Group",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"order_by\": \"depth:false\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/device_groups/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "device_groups",
                "search"
              ]
            },
            "description": "This API is used to list all device groups recorded on BioStar 2 database."
          },
          "response": []
        },
        {
          "name": "View Device Group(s) with Criteria & Permission",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"order_by\": \"depth:false\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/device_groups/only_permission_item/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "device_groups",
                "only_permission_item",
                "search"
              ]
            },
            "description": "This API is used to list all device groups recorded on BioStar 2 database."
          },
          "response": []
        },
        {
          "name": "Create New Device Group",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DeviceGroup\": {\r\n        \"name\": \"New Device Group 1\",\r\n        \"description \": \"description\",\r\n        \"parent_id\": {\r\n            \"id\": 1\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/device_groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "device_groups"
              ]
            },
            "description": "This API is used to create new device group.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the device group |\n| description | String | N | Description of the device group |\n| parent_id:id | Number | Y | ID of the parent group of this device group |"
          },
          "response": []
        },
        {
          "name": "Update Device Group",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/device_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "device_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "5",
                  "description": "ID of the device group which will be updated"
                }
              ]
            },
            "description": "This API is used to update a device group."
          },
          "response": []
        },
        {
          "name": "Delete Device Group",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/device_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "device_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "5",
                  "description": "ID of the device group which will be deleted"
                }
              ]
            },
            "description": "This API is used to delete device group."
          },
          "response": []
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Device",
      "item": [
        {
          "name": "Verify Fingerprint Scan",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"FingerprintTemplate\": {\r\n        \"template0\": \"RSoQFLAAVUYMBEBvBBlEsWSLFITAEIUGBgEYBA/G0W0IAwcgdgEbh2ANixfIMGUKEshwF4QOCbBzhjXEsaCFJITQAYohRSBViCSGoUsRLAcQooYoh6GlCDpIgZ2GKMkARgkyCXCehDhJgEIDG0sxYJsOy0BziBaMcGmPG4ywUaAVTdBokwxOEXgHEE6AeIIVT0FoERfPYBsxGg9gK9EK0QB4jRxSYRqFEhNAbxkXk1AUChiTUHSHL8zwl4EmDiE3CCHPADWKK5DAOo8nUZAqDS5SIUKXK9JhOZj////g/////////eAB///////d4AEi/////N3gASM////M3eABIzT/+7zd4BIzRE+7u83gEjNET7u7zeASNERFu7vN4BI0REW6u8zgIzRERaqqvOAjRERFqqq84TREREWqqrziNFVUT6mqvOJFVVVfqqq9BFVVVU/5qrqHd2ZU//+qqZiIdkT///qqqZh1T///+6qqqYX/////u6uqj///\",\r\n        \"template1\": \"RSgQFK8AVUYRBDBvhxqEgBGFHsSRZwsIhRF1BQtGIRuEFsZxawgJRwB5AR4H4GULGYgQF4UUyYB0hyqEsAOJJsTRWIgrRkBKjyKG4QoLMsbwooQvB3GkBi9I0EYHOUnBnQMJSgF4ghXK8HWKHYwQZ5EIzQAfhRPN4XsEHA4BbBYXzhB5hRzO8WaYB89AdoQeT0AdsQgQAHiJDlFQdoIiSvFfHCLMcE4iNszwmAIszkE2hihO8DQJIM9QKkMxEJA3CC4RwCeOIlKBHAMxEsBFIv///d3////////M3eD/////+8zd4BL///+7zN3gEj//+rvM3eASM/+qu8zd4BIzT6q7vM3gEjRFqqq7zeASNESqqrvN4CNERaqqq7zhI0RFqqqrvdfsagfsgagOE0REWqqqq84jRFVaqqqrwDRFVVqqmavQRVVVWqqqq9JVVVVvq7qqmHdmZv/6qqqZiHZm//+qqqmZhV////u6qqmFT///+7uqqoT/8=\"\r\n    },\r\n    \"VerifyFingerprintOption\": {\r\n        \"security_level\": \"0\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/:dev_id/verify_fingerprint",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":dev_id",
                "verify_fingerprint"
              ],
              "variable": [
                {
                  "key": "dev_id",
                  "value": "544140034",
                  "description": "ID of the device which used to scan fingerprint."
                }
              ]
            },
            "description": "This API is used to compare 2 fingerprint scan to determine whether it's the same finger or not.\n\nAs shown on the example, it is applied on `template0` and `template1` where `template0` is the 1st scan of the finger and `template1` is the 2nd scan.\n\nTo get the value for these parameters, use `POST /api/devices/:dev_id/scan_fingerprint` two times. The first scan for `template0` and second scan for `template1`.\n\nIt will return HTTP 200 and shows message result: true on success, HTTP 500 and shows message result: false on failure.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| template0 | Base64 | Y | 1st scan template of the fingerprint |\n| template1 | Base64 | Y | 2nd scan template of the fingerprint |\n| security_level | Number | N | Set the verification security level. Higher number will have stricter requirement. |"
          },
          "response": []
        },
        {
          "name": "Verify Duplicate Fingerprint",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ServerMatching\": {\r\n        \"template\": \"AA4NE6cAVUYXwGEODRaBgWmJGoLhCoUTw+BohB0EYWaJIMKAWIkiAsAJijED4K6JJ8ehAwkwCFCyhCYIoFcLLQjRVoQeyTFligMJUG2GD0vxcQYezkFpjAIO4HWbFU9RcwUgD4Fnkx9QsWwPCpDhcgkfkZFoiydJwAMJJQrRXAknDABTCCsP4aCJJhBABJ4m0PGqoSqRYKkXKRIQCJ7//93v//////3d7/////zN3uAP//zM3e4AH8zMzN7gAfzMzM3uARK8zM3e4AEbvMzd7gARu8zM3uARHMzMze4BEczMzN3gESu7vMzeARK7u8zN4BI7u7vM3gIjqru7vOAzT6u7u84TRP+7zMzRNE//zMzN4jP//8zM3hLw\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/server_matching/identify_finger",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "server_matching",
                "identify_finger"
              ]
            },
            "description": "This API is used to verify duplicate fingerprint.\n\nIf fingerprint already exist, it will return success (HTTP 200) and response will show the user which currently using the fingerprint.\n\nUse the result of `POST /api/devices/:dev_id/scan_fingerprint` for the value of parameter template (either the 1st or 2nd scan).\n\nIf fingerprint available, it will return server error (HTTP 500) with response showing message \"Failed to identify fingerprint.\".\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| template | Base64 | Y | Template of the fingerprint which will be validated. |"
          },
          "response": []
        },
        {
          "name": "Scan Fingerprint",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ScanFingerprintOption\": {\r\n        \"enroll_quality\": \"80\",\r\n        \"raw_image\": false\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/:dev_id/scan_fingerprint",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":dev_id",
                "scan_fingerprint"
              ],
              "variable": [
                {
                  "key": "dev_id",
                  "value": "544140034",
                  "description": "ID of the device which will be used to scan fingerprint."
                }
              ]
            },
            "description": "This API is used to scan a fingerprint.\n\nOn calling this API, it is required to specify the device which will be used as fingerprint scanner. It is done by specifying Device ID on the API Path, which marked by :dev_id.\n\nThe procedure to add a fingerprint as follows:  \n\\- Scan a finger using this API  \n\\- Use `POST /api/server_matching/identify_finger` to check if it's already exist  \n\\- If it doesn't exist, then run a second scan using this API for the same finger as the first scan  \n\\- Compare 1st and 2nd scan result using `POST` `/api/devices/:dev_id/verify_fingerprint` to make sure that 1st and 2nd scan are the same finger  \n\\- Assign the enrolled finger to a user using `POST|PUT` `/api/users/:id`\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| enroll_quality | Number | N | Set a fingerprint enrollment quality level. Any fingerprint which does not meet the quality requirement will not be enrolled. |\n| raw_image | Boolean | N | Set this option to view the original image when a fingerprint is scanned. |"
          },
          "response": []
        },
        {
          "name": "View Waiting Devices",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/waiting",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "waiting"
              ]
            },
            "description": "This API is used to view device(s) which is on waiting list after changing connection mode from `Server` > `Device to Device` > `Server`."
          },
          "response": []
        },
        {
          "name": "Add Device",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Device\": {\r\n        \"id\": \"50332377\",\r\n        \"name\": \"B50332377\",\r\n        \"device_type_id\": {\r\n            \"id\": \"8\"\r\n        },\r\n        \"connection\": {\r\n            \"status\": \"3\"\r\n        },\r\n        \"lan\": {\r\n            \"ip\": \"192.168.82.205\",\r\n            \"connection_mode\": \"1\"\r\n        },\r\n        \"system\": {},\r\n        \"capacity\": {\r\n            \"support_alphanumeric\": \"true\"\r\n        },\r\n        \"support_occupancy\": \"false\",\r\n        \"pktversion\": \"3\",\r\n        \"device_group_id\": {\r\n            \"id\": 1\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices"
              ]
            },
            "description": "This API is used to add device to BioStar X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the device which will be added |\n| name | String | Y | Name of the device which will be added |\n| device_group_id:id | Number | Y | ID of the device group which the device will be under |\n| isDisabled | Boolean | N | Toggle to disable or enable the device |\n| lan:enable_dhcp | Boolean | N | Toggle to enable or disable DHCP |\n| lan:ip | String | Y | If DHCP disabled. Put the device's IP on this parameter |\n| lan:device_port | Number | N | Port of the device which will be used by BioStar X to communicate |"
          },
          "response": []
        },
        {
          "name": "Add Device Required Only",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "const postRequest = {\r",
                  "  url: pm.collectionVariables.get('baseUrl')+\"/api/devices/waiting\",\r",
                  "  method: 'GET',\r",
                  "  header: {\r",
                  "    'bs-session-id': pm.collectionVariables.get('bsid')\r",
                  "  },\r",
                  "};\r",
                  "\r",
                  "pm.sendRequest(postRequest, (error, res) => {\r",
                  "  console.log(error ? error : res.json());\r",
                  "  const jsonData = res.json();\r",
                  "  pm.collectionVariables.set(\"w_dev_id\", jsonData.DeviceCollection.rows[0].id)\r",
                  "  pm.collectionVariables.set(\"w_dev_dtid\", jsonData.DeviceCollection.rows[0].device_type_id.id);\r",
                  "  pm.collectionVariables.set(\"w_dev_ip\", jsonData.DeviceCollection.rows[0].lan.ip);\r",
                  "  pm.collectionVariables.set(\"w_dev_connmode\", jsonData.DeviceCollection.rows[0].lan.connection_mode);\r",
                  "});\r",
                  "\r",
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Device\": {\r\n        \"id\": \"{{w_dev_id}}\",\r\n        \"name\": \"D{{w_dev_id}}\",\r\n        \"device_type_id\": {\r\n            \"id\": \"{{w_dev_dtid}}\"\r\n        },\r\n        \"lan\": {\r\n            \"ip\": \"{{w_dev_ip}}\",\r\n            \"connection_mode\": \"{{w_dev_connmode}}\"\r\n        },\r\n        \"device_group_id\": {\r\n            \"id\": 1\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices"
              ]
            }
          },
          "response": []
        },
        {
          "name": "Add Slave Device",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "const postRequest = {\r",
                  "  url: pm.collectionVariables.get('baseUrl')+\"/api/devices/waiting\",\r",
                  "  method: 'GET',\r",
                  "  header: {\r",
                  "    'bs-session-id': pm.collectionVariables.get('bsid')\r",
                  "  },\r",
                  "};\r",
                  "\r",
                  "pm.sendRequest(postRequest, (error, res) => {\r",
                  "  console.log(error ? error : res.json());\r",
                  "  const jsonData = res.json();\r",
                  "  pm.collectionVariables.set(\"w_dev_id\", jsonData.DeviceCollection.rows[0].id)\r",
                  "  pm.collectionVariables.set(\"w_dev_dtid\", jsonData.DeviceCollection.rows[0].device_type_id.id);\r",
                  "  pm.collectionVariables.set(\"w_dev_ip\", jsonData.DeviceCollection.rows[0].lan.ip);\r",
                  "  pm.collectionVariables.set(\"w_dev_connmode\", jsonData.DeviceCollection.rows[0].lan.connection_mode);\r",
                  "});\r",
                  "\r",
                  ""
                ],
                "type": "text/javascript",
                "packages": {}
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DeviceCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"40059024\",\r\n                \"name\": \"BioStation 3 40059024\",\r\n                \"device_type_id\": {\r\n                    \"id\": \"35\"\r\n                },\r\n                \"parent_device_id\": {\r\n                    \"id\": 40059023\r\n                },\r\n                \"rs485\": {\r\n                    \"mode\": \"2\",\r\n                    \"connected_channel_index\": \"0\",\r\n                    \"parent_rs485_info\": \"RS485 Port 0\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices"
              ]
            },
            "description": "This example shows how to add slave device to BioStar X."
          },
          "response": []
        },
        {
          "name": "Update Device",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Device\": {\r\n        \"name\": \"FaceStation 2 542353521 (192.168.1.23)\",\r\n        \"device_group_id\": {\r\n            \"id\": 47,\r\n            \"name\": \"Suprema\"\r\n        },\r\n        \"lan\": {\r\n            \"connection_mode\": \"1\",\r\n            \"enable_dhcp\": \"false\",\r\n            \"use_dns\": \"false\",\r\n            \"ip\": \"192.168.1.23\",\r\n            \"device_port\": \"51211\",\r\n            \"gateway\": \"192.168.1.1\",\r\n            \"subnet_mask\": \"255.255.255.0\",\r\n            \"server_port\": \"51212\",\r\n            \"mtu_size\": \"1514\",\r\n            \"baseband\": \"0\",\r\n            \"server_ip\": \"192.168.1.5\"\r\n        },\r\n        \"usb\": {\r\n            \"enable_usb\": \"false\",\r\n            \"enable_usb_memory\": \"false\"\r\n        },\r\n        \"wlan\": {\r\n            \"enabled\": \"false\",\r\n            \"operation_mode\": \"0\",\r\n            \"auth_type\": \"0\",\r\n            \"encryption_type\": \"0\"\r\n        },        \r\n        \"rs485\": {\r\n            \"mode\": \"3\",\r\n            \"intelligentInfo\": {\r\n                \"supportIConfig\": \"false\",\r\n                \"useFailCode\": \"false\",\r\n                \"failCodeFormat\": \"1\",\r\n                \"failCode\": \"0000000000000000\",\r\n                \"osdpID\": \"0\",\r\n                \"cardFormat\": \"0\"\r\n            },\r\n            \"channels\": [\r\n                {\r\n                    \"index\": \"0\",\r\n                    \"mode\": \"1\",\r\n                    \"baudrate\": \"115200\"\r\n                }\r\n            ]\r\n        },        \r\n        \"authentication\": {\r\n            \"matching_timeout\": \"5\",\r\n            \"auth_timeout\": \"5\",\r\n            \"enable_private_auth\": \"true\",\r\n            \"enable_server_matching\": \"false\",\r\n            \"face_detection_level\": \"0\",\r\n            \"enable_full_access\": \"false\",\r\n            \"operation_modes\": [\r\n                {\r\n                    \"mode\": \"0\",\r\n                    \"schedule_id\": {\r\n                        \"id\": \"1\"\r\n                    }\r\n                },\r\n                {\r\n                    \"mode\": \"5\",\r\n                    \"schedule_id\": {\r\n                        \"id\": \"1\"\r\n                    }\r\n                },\r\n                {\r\n                    \"mode\": \"9\",\r\n                    \"schedule_id\": {\r\n                        \"id\": \"1\"\r\n                    }\r\n                }\r\n            ],\r\n            \"operators\": [],\r\n            \"enable_card_Id_from_keypad\": \"false\"\r\n        },\r\n        \"card\": {\r\n            \"use_csn\": \"true\",\r\n            \"use_mifare_felica\": \"true\",\r\n            \"use_em\": \"true\",\r\n            \"use_wiegand\": \"false\",\r\n            \"use_iclass\": \"false\",\r\n            \"use_HIDprox\": \"false\",\r\n            \"use_smart\": \"true\",\r\n            \"use_SEOS\": \"false\",\r\n            \"use_SR_SE\": \"false\",\r\n            \"use_desfire_ev1\": \"true\",\r\n            \"use_classic_plus\": \"true\",\r\n            \"use_mobile\": \"true\",\r\n            \"use_BLE\": \"false\",\r\n            \"use_NFC\": \"true\",\r\n            \"byte_order\": \"0\",\r\n            \"use_wiegand_format\": \"false\",\r\n            \"card_layout\": {\r\n                \"id\": \"2\"\r\n            }\r\n        },\r\n        \"display\": {\r\n            \"language\": \"1\",\r\n            \"background\": \"0\",\r\n            \"background_theme\": \"0\",\r\n            \"volume\": \"50\",\r\n            \"use_voice\": \"false\",\r\n            \"menu_timeout\": \"20\",\r\n            \"message_timeout\": \"2000\",\r\n            \"backlight_timeout\": \"20\",\r\n            \"display_datetime\": \"true\",\r\n            \"date_type\": \"0\",\r\n            \"time_format\": \"0\",\r\n            \"home_formation\": \"5\",\r\n            \"shortcut_home\": \"\",\r\n            \"device_private_message\": \"false\",\r\n            \"server_private_message\": \"false\",\r\n            \"use_screen_saver\": \"true\",\r\n            \"sounds\": []\r\n        },\r\n        \"system\": {\r\n            \"timezone\": 28800,\r\n            \"sync_time\": \"true\",\r\n            \"locked\": \"false\",\r\n            \"interphone_type\": 0,\r\n            \"camera_frequency\": \"60\",\r\n            \"use_alphanumeric\": \"false\",\r\n            \"enable_clear_on_tamper\": \"true\",\r\n            \"enable_data_encryption\": false,\r\n            \"use_card_operation\": \"true\"\r\n        },\r\n        \"wiegand\": {\r\n            \"wiegand_in_out\": \"0\",\r\n            \"out_pulse_width\": \"40\",\r\n            \"out_pulse_interval\": \"10000\",\r\n            \"enable_bypass_mode\": \"false\",\r\n            \"format_id\": {\r\n                \"id\": \"0\"\r\n            },\r\n            \"enable_fail_code\": \"false\",\r\n            \"fail_code\": \"0\",\r\n            \"wiegand_output_info\": \"1\",\r\n            \"wiegand_csn_id\": {\r\n                \"id\": \"-1\"\r\n            },\r\n            \"wiegand_cards\": [],\r\n            \"wiegand_inputs\": []\r\n        },\r\n        \"tna\": {\r\n            \"mode\": \"1\",\r\n            \"fixed_code\": 0,\r\n            \"required\": \"false\",\r\n            \"tna_keys\": [\r\n                {\r\n                    \"order\": 1,\r\n                    \"key\": 0,\r\n                    \"keyName\": \"Code 1\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 2,\r\n                    \"key\": 1,\r\n                    \"keyName\": \"Code 2\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 3,\r\n                    \"key\": 2,\r\n                    \"keyName\": \"Code 3\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 4,\r\n                    \"key\": 3,\r\n                    \"keyName\": \"Code 4\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 5,\r\n                    \"key\": 4,\r\n                    \"keyName\": \"Code 5\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 6,\r\n                    \"key\": 5,\r\n                    \"keyName\": \"Code 6\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 7,\r\n                    \"key\": 6,\r\n                    \"keyName\": \"Code 7\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 8,\r\n                    \"key\": 7,\r\n                    \"keyName\": \"Code 8\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 9,\r\n                    \"key\": 8,\r\n                    \"keyName\": \"Code 9\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 10,\r\n                    \"key\": 9,\r\n                    \"keyName\": \"Code 10\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 11,\r\n                    \"key\": 10,\r\n                    \"keyName\": \"Code 11\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 12,\r\n                    \"key\": 11,\r\n                    \"keyName\": \"Code 12\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 13,\r\n                    \"key\": 12,\r\n                    \"keyName\": \"Code 13\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 14,\r\n                    \"key\": 13,\r\n                    \"keyName\": \"Code 14\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 15,\r\n                    \"key\": 14,\r\n                    \"keyName\": \"Code 15\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                },\r\n                {\r\n                    \"order\": 16,\r\n                    \"key\": 15,\r\n                    \"keyName\": \"Code 16\",\r\n                    \"schedule_id\": {},\r\n                    \"label\": \"\"\r\n                }\r\n            ]\r\n        },\r\n        \"input\": {\r\n            \"input_port_num\": \"0\",\r\n            \"supervised_inputs\": \"\"\r\n        },\r\n        \"event_filter\": {\r\n            \"rows\": [],\r\n            \"total\": \"0\"\r\n        },\r\n        \"voip\": {\r\n            \"use\": \"false\",\r\n            \"server\": {\r\n                \"address\": \"\",\r\n                \"user_id\": \"\",\r\n                \"password\": \"\",\r\n                \"port\": \"\"\r\n            },\r\n            \"dtmf\": {\r\n                \"mode\": \"0\",\r\n                \"exit_button\": \"0\"\r\n            },\r\n            \"phonebook_list\": []\r\n        },\r\n        \"barcode\": {\r\n            \"use_barcode\": \"false\",\r\n            \"scan_timeout\": \"4\"\r\n        },\r\n        \"pktversion\": \"3\",\r\n        \"support_occupancy\": \"true\",\r\n        \"thermal_config\": {\r\n            \"enable_thermal_camera\": \"0\",\r\n            \"enable_centigrade\": \"1\",\r\n            \"temperature_threshold_low\": \"3200\",\r\n            \"temperature_threshold_high\": \"3800\",\r\n            \"enable_audit_temperature\": \"true\",\r\n            \"enable_temperature_reject_sound\": \"true\",\r\n            \"enable_overlap_thermal\": \"true\",\r\n            \"temperature_checkmode\": \"0\",\r\n            \"enable_mask\": \"0\",\r\n            \"mask_detection_level\": \"0\",\r\n            \"enable_dynamic_roi\": \"false\"\r\n        },\r\n        \"thermal_camera_config\": {\r\n            \"distance\": \"100\",\r\n            \"emissivity\": \"98\",\r\n            \"roi_x\": \"47\",\r\n            \"roi_y\": \"45\",\r\n            \"roi_width\": \"15\",\r\n            \"roi_height\": \"10\",\r\n            \"enable_body_compensation\": \"true\",\r\n            \"compensation_temperature\": \"0\"\r\n        },\r\n        \"trigger_actions\": \"\",\r\n        \"authmode\": {\r\n            \"id\": \"542353521\",\r\n            \"extAuthModeSupported\": \"false\",\r\n            \"cardAuthSupported\": \"true\",\r\n            \"cardAuthMask\": \"0\",\r\n            \"fingerprintAuthSupported\": \"true\",\r\n            \"fingerprintAuthMask\": \"0\",\r\n            \"faceAuthSupported\": \"false\",\r\n            \"faceAuthMask\": \"990979\",\r\n            \"idAuthSupported\": \"true\",\r\n            \"idAuthMask\": \"0\"\r\n        },\r\n        \"card_supported_from_device\": {\r\n            \"mask\": \"2147483957\",\r\n            \"em4100\": \"true\",\r\n            \"HIDProx\": \"false\",\r\n            \"mifare_felica\": \"true\",\r\n            \"iCLASS\": \"false\",\r\n            \"mifareClassic_Plus\": \"true\",\r\n            \"Desfire_ev1\": \"true\",\r\n            \"iCLASSSRSE\": \"false\",\r\n            \"iCLASSSEOS\": \"false\",\r\n            \"NFC\": \"true\",\r\n            \"BLE\": \"false\",\r\n            \"use_card_operation\": \"true\"\r\n        },\r\n        \"capability\": {\r\n            \"thermalAuthSupported\": \"1\",\r\n            \"maskAuthSupported\": \"0\",\r\n            \"intelligentPDSupported\": \"0\"\r\n        },\r\n        \"imageLogEventInfo\": {\r\n            \"imageLogEventItems\": []\r\n        },\r\n        \"use_image_log\": \"false\",\r\n        \"dst1\": \"0\",\r\n        \"dst2\": \"0\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the device which will be updated"
                }
              ]
            },
            "description": "This API is used to update device's configuration.  \nPut value which will be updated on the respective body parameter and remove any parameters which will not be updated.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | N | Name of the device |\n| device_group_id:id | Number | N | Group ID of the device |\n| lan:connection_mode | Number | N | Connection mode of the device:  <br>0 = Server > Device  <br>1 = Device > Server |\n| lan:enable_dhcp | Boolean | N | Toggle true to enable DHCP |\n| lan:use_dns | Boolean | N | Toggle true to use DNS |\n| lan:ip | String | N | IP of the device |\n| lan:device_port | Number | N | Connection port which the device use |\n| lan:gateway | String | N | IP gateway which the device use |\n| lan:subnet_mask | String | N | Subnet of the device |\n| lan:server_port | Number | N | Connection port of the server |\n| lan:server_ip | String | N | IP of the server |\n| usb:enable_usb | Boolean | N | Use USB |\n| usb:enable_usb_memory | Boolean | N | Use USB memory |\n| wlan:enabled | Boolean | N | Toggle true to use WLAN (only for supported devices) |\n| wlan:operation_mode | Number | N | Operation mode of the device |\n| wlan:auth_type | Number | N | WLAN authorization type |\n| wlan:encryption_type | Number | N | WLAN encryption type |\n| rs485:mode | Number | N | RS485 Mode:  <br>1 = Master  <br>2 = Slave  <br>3 = Default |\n| rs485:channels:mode | Number | N | Channel usage (same as mode) |\n| rs485:channels:baudrate | Number | N | Baudrate value |\n| authentication:matching_timeout | String | N | Matching Timeout |\n| authentication:auth_timeout | String | N | Authentication Timeout |\n| authentication:enable_private_auth | Boolean | N | Use Private Authentication |\n| authentication:enable_server_matching | Boolean | N | Use Server Matching |\n| authentication:face_detection_level | String | N | Face Detection Level |\n| authentication:enable_full_access | Boolean | N | Use Full Access |\n| authentication:operation_modes:mode | Number | N | Operation/Authentication Mode |\n| authentication:operation_modes:schedule_id:id | Number | N | Schedule applied for Operation/Authentication Mode |\n| authentication:enable_card_Id_from_keypad | Boolean | N | Use Card ID from Keypad |\n| card:use_csn | Boolean | N | Use CSN |\n| card:use_mifare_felica | Boolean | N | Use Mifare Felica |\n| card:use_em | Boolean | N | Use EM |\n| card:use_wiegand | Boolean | N | Use Wiegand |\n| card:use_iclass | Boolean | N | Use Iclass |\n| card:use_HIDprox | Boolean | N | Use HIDprox |\n| card:use_smart | Boolean | N | Use Smart |\n| card:use_SEOS | Boolean | N | Use SEOS |\n| card:use_SR_SE | Boolean | N | Use SR SE |\n| card:use_desfire_ev1 | Boolean | N | Use Desfire EV1 |\n| card:use_classic_plus | Boolean | N | Use Classic Plus |\n| card:use_mobile | Boolean | N | Use Mobile |\n| card:use_BLE | Boolean | N | Use BLE |\n| card:use_NFC | Boolean | N | Use NFC |\n| card:byte_order | String | N | Card Byte Order |\n| card:use_wiegand_format | Boolean | N | Use Wiegand Format |\n| display:language | String | N | Language |\n| display:background | String | N | Background |\n| display:background_theme | String | N | Background Theme |\n| display:volume | String | N | Volume |\n| display:use_voice | Boolean | N | Use Voice |\n| display:menu_timeout | String | N | Menu Timeout |\n| display:message_timeout | String | N | Message Timeout |\n| display:backlight_timeout | String | N | Backlight Timeout |\n| display:display_datetime | Boolean | N | Display DateTime |\n| display:date_type | String | N | Date Type |\n| display:time_format | String | N | Time Format |\n| display:home_formation | String | N | Home Formation |\n| display:shortcut_home | String | N | Shortcut Home |\n| display:device_private_message | Boolean | N | Device Private Message |\n| display:server_private_message | Boolean | N | Server Private Message |\n| system:timezone | Integer | N | Time Zone |\n| system:sync_time | Boolean | N | Sync Time |\n| system:locked | Boolean | N | Locked |\n| system:interphone_type | Integer | N | Interphone Type |\n| system:camera_frequency | String | N | Camera Frequency |\n| system:use_alphanumeric | Boolean | N | Use Alphanumeric |\n| system:enable_clear_on_tamper | Boolean | N | Use Clear Tamper |\n| system:enable_data_encryption | Boolean | N | Use Date Encryption |\n| system:use_card_operation | Boolean | N | Use Card Operation |\n| wiegand:wiegand_in_out | string | N | Wiegand In Out |\n| wiegand:out_pulse_width | string | N | Out Pulse Width |\n| wiegand:out_pulse_interval | string | N | Out Pulse Interval |\n| wiegand:enable_bypass_mode | boolean | N | Use Bypass Mode |\n| wiegand:format_id:id | string | N | Format ID |\n| wiegand:enable_fail_code | boolean | N | Use Fail Code |\n| wiegand:fail_code | string | N | Fail Code |\n| wiegand:wiegand_output_info | string | N | Wiegand Output Information |\n| wiegand:wiegand_csn_id:id | string | N | Wiegand CSN ID |\n| wiegand:wiegand_cards | Array | N | Wiegand Cards |\n| wiegand:wiegand_inputs | Array | N | Wiegand Inputs |\n| tna:mode | string | N | TnA Mode |\n| tna:fixed_code | integer | N | TnA Fixed Code |\n| tna:required | boolean | N | TnA Required |\n| tna:tna_keys:order | integer | N | TnA keys order |\n| tna:tna_keys:key | integer | N | TnA Key |\n| tna:tna_keys:keyName | string | N | TnA KeyName |\n| tna:tna_keys:schedule_id | Number | N | Schedule ID |\n| tna:tna_keys:label | string | N | Label |\n| input:input_port_num | string | N | Input Port Number |\n| input:supervised_inputs | string | N | Supervised Inputs |\n| event_filter | Array | N | List of event filters in which image logs are saved on the device |\n| voip:use | boolean | N | Use Voip |\n| voip:server:address | string | N | Address |\n| voip:server:user_id | string | N | User ID |\n| voip:server:password | string | N | Password |\n| voip:server:port | string | N | Port |\n| voip:dtmf:mode | string | N | DTMF Mode |\n| voip:dtmf:exit_button | string | N | Exit Button |\n| voip:phonebook_list | string | N | List of extension numbers on the intercom |\n| thermal_config:enable_thermal_camera | string | N | Thermal Camera Use Not Use : 0  <br>Use (Deny access when exceeded threshold temperature) : 1  <br>Use (Allow access after leaving log when exceeded threshold temperature) : 2 |\n| thermal_config:enable_centigrade | string | N | Celsius (1) |\n| thermal_config:temperature_threshold | string | N | Threshold Temperature (Celsius, 38.0 -> 3800) |\n| thermal_config:enable_audit_temperature | boolean | N | Save Temperature Data |\n| thermal_config:enable_temperature_reject_sound | boolean | N | Temperature Fail Sound |\n| thermal_config:enable_overlap_thermal | boolean | N | Show Infrared Image (Device not supported) |\n| thermal_config:temperature_checkmode | string | N | Check Mode  <br>Check after authentication : 0  <br>Check before authentication : 1  <br>Check without authentication : 2 |\n| thermal_config:enable_mask | string | N | Mask Detection  <br>Not Use : 0  <br>Use (Deny access when failed to detect mask) : 1  <br>Use (Allow access after leaving log when failed to detect mask) : 2 |\n| thermal_config:mask_detection_level | string | N | Mask Detect Level  <br>Off : 0  <br>Strict : 1  <br>More Strict : 2  <br>Most Strict : 3 |\n| thermal_config:enable_dynamic_roi | boolean | N | Dynamic ROI (Device not supported) |\n| thermal_camera_config:distance | string | N | Distance (cm) |\n| thermal_camera_config:emission_rate | string | N | Emission Rate (0.95 -> 95, 0.97 -> 97, 0.98 -> 98) |\n| thermal_camera_config:roi_x | string | N | ROI X (%) |\n| thermal_camera_config:roi_y | string | N | ROI Y (%) |\n| thermal_camera_config:roi_width | string | N | ROI Width (%) |\n| thermal_camera_config:roi_height | string | N | ROI Height (%) |\n| thermal_camera_config:compensation_temperature | string | N | Temperature Correction (Celsius) |\n| authmode:id | string | N | Authmode Id |\n| authmode:extAuthModeSupported | boolean | N | Use Authmode ExtAuthModeSupported |\n| authmode:cardAuthSupported | boolean | N | Use Authmode CardAuthSupported |\n| authmode:cardAuthMask | string | N | Authmode CardAuthMask |\n| authmode:fingerprintAuthSupported | boolean | N | Use Authmode FingerprintAuthSupported |\n| authmode:fingerprintAuthMask | string | N | Authmode FingerprintAuthMask |\n| authmode:faceAuthSupported | boolean | N | Use Authmode FaceAuthSupported |\n| authmode:faceAuthMask | string | N | Authmode FaceAuthMask |\n| authmode:idAuthSupported | boolean | N | Use Authmode IdAuthSupported |\n| authmode:idAuthMask | string | N | Authmode IdAuthMask |\n| card_supported_from_device:mask | string | N | Card Supported From Device Mask |\n| card_supported_from_device:em4100 | boolean | N | Use Card Supported From Device Em4100 |\n| card_supported_from_device:HIDProx | boolean | N | Use Card Supported From Device HIDProx |\n| card_supported_from_device:mifare_felica | boolean | N | Use Card Supported From Device Mifare Felica |\n| card_supported_from_device:iCLASS | boolean | N | Use Card Supported From Device ICLASS |\n| card_supported_from_device:mifareClassic_Plus | boolean | N | Use Card Supported From Device MifareClassic Plus |\n| card_supported_from_device:Desfire_ev1 | boolean | N | Use Card Supported From Device Desfire Ev1 |\n| card_supported_from_device:iCLASSSRSE | boolean | N | Use Card Supported From Device ICLASSSRSE |\n| card_supported_from_device:iCLASSSEOS | boolean | N | Use Card Supported From Device ICLASSSEOS |\n| card_supported_from_device:NFC | boolean | N | Use Card Supported From Device NFC |\n| card_supported_from_device:BLE | boolean | N | Use Card Supported From Device BLE |\n| card_supported_from_device:use_card_operation | boolean | N | Use Card Supported From Device Operation |\n| capability:thermalAuthSupported | string | N | Capability ThermalAuthSupported |\n| capability:maskAuthSupported | string | N | Capability MaskAuthSupported |\n| imageLogEventInfo:imageLogEventItems | Array | N | Image Log Event Items |\n| use_image_log | boolean | N | Use Image Log |\n| dst1 | string | N | dst1 |\n| dst2 | string | N | dst2 |"
          },
          "response": []
        },
        {
          "name": "Update Device Homescreen",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DeviceCollection\": {\r\n        \"total\": 2,\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"538152248\"\r\n            },\r\n            {\r\n                \"id\": \"538152254\"\r\n            }\r\n        ]\r\n    },\r\n    \"ResourceDataCollection\": {\r\n        \"total\": 1,\r\n        \"type\": \"2\",\r\n        \"rows\": [\r\n            {\r\n                \"slot\": 0,\r\n                \"data\": \"iVBORw0KGgoAAAANSUhEUgAAAtAAAA...--redacted\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/resources/update",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "resources",
                "update"
              ]
            },
            "description": "This API is used to update Device's homescreen.\n\nBefore running this API, you must set the Device's homescreen parameter to either Notice or Logo using `Update Device` API (`/api/devices/:id`)\n\n``` json\n{\n  \"Device\": {\n    \"display\": {\n      \"background\": \"0\"\n      \"background_theme\": \"2\"\n    }\n  }\n}\n\n```\n\n| **Parameter** | **Description** |\n| --- | --- |\n| background | 0 = Default  <br>2 = Slide Show |\n| background_theme | 0 = Normal  <br>1 = Notice  <br>2 = Logo |\n\nTo set it as Slide Show mode, set both background and background_theme value to 2.\n\nThen run this API to adjust the display accordingly.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| DeviceCollection.total | Number | Y | Total number of devices which will be updated. |\n| DeviceCollection.rows.id | String | Y | ID of the device which will be updated. May contain multiple value by repeating the parameter separated by comma (,). Do note that total number of device need to be the same as total number of device listed. |\n| ResourceDataCollection.total | Number | Y | Total number of data which will be applied. |\n| ResourceDataCollection.type | String | Y | 1 = Use this if background_theme is set to Notice.  <br>2 = Use this if background_theme is set to Logo.  <br>3 = Use this to set it as Logo Slide Show. |\n| ResourceDataCollection.rows.slot | Number | Y | Data display sequence. For Type 1 and 2 set it as 0. |\n| ResourceDataCollection.rows.data | Base64 | Y | Data which will be used for homescreen display. Use base64 encoding for its value. |"
          },
          "response": []
        },
        {
          "name": "List Device Types",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/device_types",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "device_types"
              ]
            },
            "description": "This API is used to list Suprema devices recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "View Device(s) Based on Enrollment Type",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/enrollment?type=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "enrollment"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "0",
                  "description": "Device enrollment type. 0=All, 1=Finger, 2=CSN, 3= Smart, 4=Face, 5=Visual Face"
                }
              ]
            },
            "description": "This API is used to view device(s) based on its enrollment capabilities."
          },
          "response": []
        },
        {
          "name": "List All Added Device(s)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices"
              ]
            },
            "description": "This API is used to view all devices added to BioStar X.\n\n#### Status response for this API:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| status | Integer | Connection status of the device.  <br>0: Disconnected  <br>1: Connected  <br>2: Sync Error |"
          },
          "response": []
        },
        {
          "name": "List Added Device(s) with Criteria",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"limit\": 0,\r\n    \"exclude_device_type_id\": \"254\",\r\n    \"order_by\": \"id:false\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/devices/search?virtual=true",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "devices",
                "search"
              ],
              "query": [
                {
                  "key": "virtual",
                  "value": "true",
                  "description": "Add this parameter and set the value as true to display virtual devices."
                }
              ]
            },
            "description": "This API is used to list devices with parameters to filter the result.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| limit | Number | N | limit the number of responses according to the specified value |\n| exclude_device_type_id | Number | N | Exclude device to show on the response according to the device type id specified |\n| order_by | String | N | Order the response according to the specified value |\n\nIt is required to at least put {} for the API to run correctly.\n\n#### Status response for this API:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| status | Integer | Connection status of the device.  <br>0: Disconnected  <br>1: Connected  <br>2: Sync Error |\n| user_sync_status | Integer | User sync status of the device.  <br>\\-1: Exceeded max user count  <br>0: Normal  <br>\\>0: User Sync Error |"
          },
          "response": []
        },
        {
          "name": "View Device Information",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "542353521",
                  "description": "ID of the device which information will be viewed"
                }
              ]
            },
            "description": "This API is used to view device's information."
          },
          "response": []
        },
        {
          "name": "View Device Configuration",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/config",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "config"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "543720368",
                  "description": "ID of the device which information will be viewed"
                }
              ]
            },
            "description": "This API is used to view device's configuration."
          },
          "response": []
        },
        {
          "name": "View User Data Summary on a Device",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/discover_userdata",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "discover_userdata"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "543308153",
                  "description": "ID of the device which user data will be viewed"
                }
              ]
            },
            "description": "This API is used to view user data on a device."
          },
          "response": []
        },
        {
          "name": "Enroll Face Credential",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/credentials/face?pose_sensitivity=4",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "credentials",
                "face"
              ],
              "query": [
                {
                  "key": "pose_sensitivity",
                  "value": "4",
                  "description": "Set the sensitivity for the position, angle, and distance of a face when registering the face. Set the sensitivity high if you wish to obtain a detailed face template. 0-9"
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "543720368",
                  "description": "ID of the device which will be used to enroll"
                }
              ]
            },
            "description": "This API is used to enroll face credential from a device."
          },
          "response": []
        },
        {
          "name": "Remove Device(s)",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices?id=543408590",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "543408590",
                  "description": "ID of the device(s) which will be deleted. To delete multiple device use plus (+) sign as separator."
                }
              ]
            },
            "description": "This API is used to delete device(s)."
          },
          "response": []
        },
        {
          "name": "View Device Capabilities",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DeviceCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"543720368\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/capability",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "capability"
              ]
            },
            "description": "This API is used to list device's capabilities such as fingerprint, wifi, etc.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the device |"
          },
          "response": []
        },
        {
          "name": "Sync Device Data",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DeviceCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"544140034\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/sync?clean=false",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "sync"
              ],
              "query": [
                {
                  "key": "clean",
                  "value": "false",
                  "description": "Toggle true to delete data on the device before sync process."
                }
              ]
            },
            "description": "This API is used to sync device's data with BioStar X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the device that the data will be synced |"
          },
          "response": []
        },
        {
          "name": "Unlock Device",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DeviceCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"543720368\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/unlock",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "unlock"
              ]
            },
            "description": "This API is used to set a device state to unlocked.\n\nManually unlocked device state will persist until it's normalized.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the device which will be unlocked |"
          },
          "response": []
        },
        {
          "name": "Search Devices (TCP)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Device\": {\r\n        \"lan\": {\r\n            \"ip\": \"192.168.1.25\",\r\n            \"device_port\": \"51211\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/tcp_search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "tcp_search"
              ]
            },
            "description": "This API is used to view device's information using TCP.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| ip | String | Y | IP of the device |\n| device_port | Number | Y | Port of the device |\n\nThis API only works for devices which haven't been added to BioStar X."
          },
          "response": []
        },
        {
          "name": "Search Devices (UDP)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"UdpSearchOption\": {\r\n        \"timeout\": 3,\r\n        \"with_rs485\": true,\r\n        \"hide_known_devices\": true\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/udp_search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "udp_search"
              ]
            },
            "description": "This API is used to search devices through UDP.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| timeout | Number | N | Search devices until the specified second reached |\n| with_rs485 | Boolean | N | Toggle to find device(s) with RS485 |\n| hide_known_devices | Boolean | N | Toggle to show device(s) which already known (added to BioStar X) or not. |"
          },
          "response": []
        },
        {
          "name": "View Device IP Settings",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Device\": {\r\n        \"id\": 543408590\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/udp_get",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "udp_get"
              ]
            },
            "description": "This API is used to get the IP settings of a device which have not been added to BioStar X.\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the device which the IP setting will be viewed. |"
          },
          "response": []
        },
        {
          "name": "Update Device IP Settings",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Device\": {\r\n        \"id\": \"543408590\",\r\n        \"lan\": {\r\n            \"connection_mode\": \"0\",\r\n            \"enable_dhcp\": false,\r\n            \"use_dns\": \"false\",\r\n            \"ip\": \"192.168.1.25\",\r\n            \"device_port\": \"51211\",\r\n            \"gateway\": \"192.168.1.1\",\r\n            \"subnet_mask\": \"255.255.255.0\",\r\n            \"server_port\": \"51212\",\r\n            \"server_ip\": \"192.168.1.5\"\r\n        },\r\n        \"device_type_id\": {\r\n            \"id\": \"31\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/udp_put",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "udp_put"
              ]
            },
            "description": "This API is used to update IP settings on device which have not been added to BioStar X.\n\nIt is required to fill in the id parameter with the id of the device which the IP settings will be updated.\n\nFill in the required value on the respective parameters and remove those which is not required.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the device which will be updated. |\n| lan:connection_mode | Number | N | Connection mode of the device:  <br>0 = Server > Device  <br>1 = Device > Server |\n| lan:enable_dhcp | Boolean | N | Toggle true to enable DHCP |\n| lan:use_dns | Boolean | N | Toggle true to use DNS |\n| lan:ip | String | N | IP of the device |\n| lan:device_port | Number | N | Connection port which the device use |\n| lan:gateway | String | N | IP gateway which the device use |\n| lan:subnet_mask | String | N | Subnet of the device |\n| lan:server_port | Number | N | Connection port of the server |\n| lan:server_ip | String | N | IP of the server |\n| device_type_id:id | Number | N | Device type ID |"
          },
          "response": []
        },
        {
          "name": "Connect Device",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/connect",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "connect"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "542353521",
                  "description": "ID of the device which will be connected"
                }
              ]
            },
            "description": "This API is used to connect a device which have been disconnected."
          },
          "response": []
        },
        {
          "name": "Disconnect Device",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/disconnect",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "disconnect"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "542353521",
                  "description": "ID of the device which will be disconnected"
                }
              ]
            },
            "description": "This API is used to disconnect a device connection from BioStar X."
          },
          "response": []
        },
        {
          "name": "Find Wiegand",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/discover_wiegand",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "discover_wiegand"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "544140034",
                  "description": "ID of the master device"
                }
              ]
            },
            "description": "This API is used to find wiegand device attached to master device."
          },
          "response": []
        },
        {
          "name": "Find Slave Device",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/discover",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "discover"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "544140034",
                  "description": "ID of the master device"
                }
              ]
            },
            "description": "This API is used to find slave device attached to a master device."
          },
          "response": []
        },
        {
          "name": "Enroll Card Credential",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/scan_card",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "scan_card"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "543720368",
                  "description": "ID of the device which will be used for enrollment"
                }
              ]
            },
            "description": "This API is used to enroll card credential using specified device."
          },
          "response": []
        },
        {
          "name": "Write Card Data",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"SmartCard\": {\r\n        \"user_id\": {\r\n            \"user_id\": \"2\",\r\n            \"fingerprint_templates\": [\r\n                {\r\n                    \"finger_index\": \"0\"\r\n                }\r\n            ],\r\n            \"visual_face_templates\": []\r\n        },\r\n        \"card_id\": {\r\n            \"card_id\": \"2\",\r\n            \"card_type_id\": {\r\n                \"id\": \"3\"\r\n            },\r\n            \"use_alphanumeric_user_id\": \"false\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/write_card",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "write_card"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "542353521",
                  "description": "ID of the device which will be used to write the card. Do set the Smart Card layout of the device before running this API."
                }
              ]
            },
            "description": "This API is used to write data to a card (Smart Card, etc.).\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_id:user_id | String | Y | ID of the user which will be written on the card. |\n| user_id:fingerprint_templates:finger_index | Number | N | Fingerprint index template which will be written on the card. |\n| user_id:visual_face_templates | Number | N | Visual face index template which will be written on the card. |\n| card_id:card_id | Number | N | ID of the card |\n| card_id:card_type_id:id | Number | N | Card Type ID  <br>1: CSN  <br>2: SECURE  <br>3: ACCESS  <br>4: WIEGAND |\n| card_id:use_alphanumeric_user_id | Boolean | N | Toggle true if using alphanumeric user ID. |"
          },
          "response": []
        },
        {
          "name": "Clear Device Alarm",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DeviceCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": 542353521\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/clear_alarm",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "clear_alarm"
              ]
            },
            "description": "This API is used to clear alarm from a device.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the device which alarm will be cleared. |"
          },
          "response": []
        },
        {
          "name": "View User Statistics in a Device",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/discover_userdata",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "discover_userdata"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "538152248",
                  "description": "ID of the device which will be viewed"
                }
              ]
            },
            "description": "This API is used to view user statistics in a device."
          },
          "response": []
        },
        {
          "name": "View Total User on a Device",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/users?limit=20&page=0",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "users"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "20",
                  "description": "Limit the number of response's records by the specified value. Default value = 50"
                },
                {
                  "key": "page",
                  "value": "0",
                  "description": "Filter the response based on the specified page number. Default value = 1"
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "543308153"
                }
              ]
            },
            "description": "This API is used to view user data summary from a device."
          },
          "response": []
        },
        {
          "name": "Delete User from a Device",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/users?id=*",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "users"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "*",
                  "description": "ID of the user which will be deleted. Use (*) for all user."
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "543720368",
                  "description": "ID of the device which the user data will be deleted"
                }
              ]
            },
            "description": "This API is used to delete user data on a device."
          },
          "response": []
        },
        {
          "name": "Export User Data from a Device to BioStar 2",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/users/export?id=44004",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "users",
                "export"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "44004",
                  "description": "ID of the user which will be uploaded. Use plus symbol ( + ) to separate multiple user ID, ex: 1+2+3."
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "538152248",
                  "description": "ID of the device which the user data will be uploaded to."
                }
              ]
            },
            "description": "This API is used to export user data from a device to BioStar X.\n\n#### Response Example:\n\n``` json\n{\n    \"UserCollection\": {\n        \"total\": \"0\",\n        \"rows\": [\n            {\n                \"user_id\": \"44004\",\n                \"updated_count\": \"2\",\n                \"disabled\": \"false\",\n                \"flag\": \"1\",\n                \"cards_count\": \"0\",\n                \"fingerprint_templates_count\": \"0\",\n                \"face_count\": \"1\",\n                \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\n                \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\n                \"security_level\": \"0\",\n                \"private_operation_modes\": \"\",\n                \"name\": \"김승제_03(인증O)\",\n                \"credentials\": {\n                    \"visualFaces\": [\n                        {\n                            \"template_ex_normalized_image\": \"\\/9j\\/4AAQSkZJRgABAQAAAQABAAD\\/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr\\/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr\\/wAARCABwAHADASIAAhEBAxEB\\/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL\\/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6\\/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL\\/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6\\/9oADAMBAAIRAxEAPwD9dY0GOp61N5JHVhRFEwYvkVOsW48gVxmZEsTgZByPauB\\/aS\\/aQ+Fn7LPw+ufiT8WNbe1sYUP2e1to99xduP4IlOB3GWYhFyNxGRnu9f1SDw3oN3r1x\\/qrK1eeTBx8qgk\\/yr8Z\\/wBtTxb4w+M2l6p8W\\/jb4rvLg37+dY6ajiGKztBskt7WGIjCIpLK3dnDFssSaCox5tjX+Nn\\/AAWh\\/a5+PniW\\/wDC3wSXSvh34XETSC\\/ceZflACQrXD8KzcAhE74DZ5r5Inl0jxN40vx4q8cTalqgkWXV7t7hpJbqaeVk2oWOS3ylssQACp4xXP6FoHxS\\/aDvI7XwT4ZYafbySI14kW2N1Z3+UY5DYJGD0GPTNer+Av2ItZg16W91Nbq4urpIVkllgJP7sAY+X+Zrjr5lhMK7N3Z6OHyzF4jVRsiHVfCngbU7ix+FXw8u5ZbMLjVLpY1LTTl4wXHBYBQ0qhACZJBEOFLOOI8f\\/BPw8IZbPwcNLnZZGivLwzyXDFw2CkRztnYEHJUrGvPLBXK+ueJv2c\\/FHgLSLiHw8syS3kp85kJDHsM4O4Y3MfqK4PxHJ468J6Hc6JB4VZ2vYtlxcyQsZZIE2gxDkBIsLgqAN3ckVNDNcHiHa9jerk2MpRva55r8IfjH+0h+yj4mT4h\\/s\\/fFPWvDcSPiRrXU1t7G9wc7JLecNFcD22yH0x1H6tfsA\\/8ABc34S\\/tD3Gm\\/CP8AaasrTwR46ucQQalFcqdH1Sbou2Qsfsrt\\/cf5M9GHAr8ZvjP8UviLN4iuPGOreFJryeVWS1iCuLexXssapjPIwdwAPZcYryxPjz4vk1L7J4j0G1tQzAjEDAj22gEtXanTqL3Hc82rSnB++rM\\/rikUqdpXH4e2ajkRSp+UZ+lfjh\\/wSg\\/4LMeNvhXqWl\\/Av9rLWrrUfAd2Eg0XxXfOz3Ph4k4RbjcBK1qcquWBMYAIJQ4X9jba5tb61ivbK5jmgniWSCaJwySIwyrKwJDKQQQRwQQRxRy2MHoyMrjqKryqeSR3qeVyGxmoJXyCC3eoEdjFGSvKnrU3yINxGOgoTp+NcB+0t8So\\/hV8ItY8bzXXkR6dYT3UsgfBxHGSFH+87IuewYntWjAj+Mv7Q3gT4ZeHp7jWF+0qYWBRCCrjoQM8H0r8if2ktN079p\\/41Q\\/D3wjBdLpU82ZY5E8v7NFu3MuSRwPbNb37Sv7SE\\/jf4e2Gvaj4nkafUpHtobXSbZS9xIijI8x8tsQED5FPqSK5b9hHTrK98dXfiiW3k8yb9xHLNOZCI1x0Y9R3yBj3rgzKrUw+HbXU9bJ8NHEYtRkfUfwn+A3gf4c+GofC\\/hPSUt4bOHZHIkQyx756f5NaGoaDDod6ix2bF5nyWEJHA9Tj3rttADXEqR28PyO38PpWnrmi29zZxia32Sjltg4+lfGTpynq3qfoUYxhotjyfVvD2nagEeVEVsnYGXIzivOfiX4K0eeXN7YRkumwkRj\\/ADzXsuuQRxXbJBAPLiYsGUdDj09K4DxvB9vmRuFAblj0FcsounqjeEVM8J8UfBLwnqekXIutDtgzru3eXz0weDXyZ8cv2crG6F1HoEgtdpOLeJdqH6bcEV9vfES9k0u3ljjAlLAbeo7nP8q+evipcR2us4hlQCX7vOeCM\\/8A1vwrqwOLxNKpdSObF4HD1qXLJHw34O1bUPh940m8LeJrGeCNm2NJbzSOvoHwT7+9fsR\\/wRP\\/AOChWpWj6Z+xX8YvFEWoW8wl\\/wCFfa3JMN0QRQ39nSA\\/MAw3PFnG0o6DhlA\\/L79o7wnGviaz8R2Fv+9BKsY52iJOfVTxVPR\\/FXiHwl4g03XNF1WW11W1uIrqxluflntZ42DwyxyDG7a4Ddvxr7zD1vrFBT6n5xjcN9WxDgtj+nyS8DncG7\\/r9fxFQyToc815r+zn8ddN+PfwJ8J\\/F7TL1Zv7c0SCW9C8eVcqoWZCPUSiVcdgo9a7Qaqpbk\\/XmtJbHAeshkHQ18uf8Fjp5rH\\/AIJ8+NtYs9R+zTW8umRvMWIBhl1K1jlGQM\\/dY9Oykd6+oK8V\\/wCChPw1Hxc\\/Y78b+BTM8SXNhDK0sdr5xRYp45S2zK7sbM9R9RVCvZn4U\\/Dz46eDPFenWWlaxbiK2Syc6i21stbwr8tohQZjE03LnkkIzEnK5+rv2EdH1PXtJHjHVpVgWeYtaWlrFtjhj6Ki5HTuee9fmjq+i+N\\/gJ8Zr74OSiRtVGpS2jSRwsiOzuqjbkA7SxX2OOCRgn9VPDWox\\/sm\\/s+WEEuiS6vrP2dFhsbQqrzTkAfxcAAnt2rx89qXpxpdWfVcPQSlOq+h9K6JfPpqKhceaq4HTJP8qXxBrWuraNNsKqrBicKc\\/kK+Jpvi3\\/wUzvrWTxn4a+F+mQ2xn3fZpIGkZU4+UZYZ9ypJ7gVd8G\\/8FJ\\/iVpsdx4e+PnwjGm3sczeXLa7gJjg5HJII4BBHZueleMsFUUbto+kp42nKdrM+n7jVhqEkOGCmRmU54BPcVyfifT9WubsW1pas6byZT2x9a81+GX7Tug\\/Erx0+kR201lbjM8rysAAnQL\\/wInGa6DS\\/j9YTadqGoW6pINN1NopljfJ2BFJHpnLdfTPpXnyouUuVnqe0hBcxzvxc0k2enR3FrFEsQJ8yUMdzdcjGOBz1r5l+ISW0108ksREiSMIkbkqM+v6\\/jUf7Qv8AwUxh07UG0Cy8FC5eA4IE5G4454we+a8Qvv25ZfEhe41n4Z3Eal8vLDkqo+uK6qeVYhR5keXiM2wvNyXE+PlnLeaNNI8IYIuVLDg4\\/wD118+nxozTnSLlvJ8sFBHcKHjYZ6YABU+4r6OHibQPjZ4PvY\\/DMjGRIzmKbhgTx0FfKuq6NPJ4um8JazL9nnhmKliPvDtyeh9+nNfS5S5Qi6ct0fJZxaUlUWzP20\\/4ICfF\\/VPEP7JfiDwrqdz5kWheL2Wy3MSVjmtYXKnd6Orkf75r7si8TxOwPmDr0z1r81f+CImk3fgH9lfUtfltJbdfEHiWWSOGRQMrbxRw7hjgjeJBkcHHtX2jY+PnSTDyEZPFdk6q5mkfPn3EykngU1oVkASVFZScMrAEEdwR6VKwAPBprDIrbcVz8N\\/+Cnf7Pd3N\\/wAFkND0ofDvT9J0zW7vS7rTJ7G3McV3CoV5JT0XePKKkKBgjp3r6y8Vad4U0u+PivXAJV061Yw25iLnOP4VGWZj6AE10X\\/BUz4Q67N+1r8FPj+LZ5tJsnvtJvXHItp2illic+m7LDPqKb4avLK41KaC00BJpPLBkumA6H+7xmvk88qS+tJdj73h2jD6jzLqfIHxJ\\/4Kd\\/tBeEtEu5bL9mDV9O0CGXZbHxBpj2zToSQGQ53HAUM3yYUMuSc184aN\\/wAFAPCfxz1k3PjT4c3OkxXVz5crXiZiEuMgc\\/d+oNfp34zHiLWdPl8F2GvR2UF7I4Swu7SNhIdo6Ak9h1rxBv2DvDnirxQLjW7b+0p5ZCzQrZokO712hcMMZrz5V8OqduR83e\\/6Hu0sNiFV5+ZcvaxyXwb\\/AGcfFHj3OtfDvSkeymgffqLyhdygHKLg8gY614x8Ztf174UeI9T8KaxfAXN2BNMQrriYrtKKD97AH3gOa\\/SvwT4Oj+FPguz8JaTDJGmnrIAWAUAvnK49O2PevgP9unwva3Xxnt\\/EV3aLNja1x5mCpKnOOenpWTmoNXO5QU09DwTwr4r\\/AGY\\/B0F14t+K3hy68Q6jH\\/rbeFCsED8ny3ZVZgxCsfugcYznisjxr+2x+zp4u0CXTPCvwxtNK00SeUHWBgA3oTJGnOMHrX254a8CfDDxh8ICnhH4PaLcwzQA31nPpMG4vjO4krlj3yT796+dfGH7P7XlzLpmh\\/CHS9ItySzSyW4JC+ygEV1RxODaSnzX9dDzKuDxjk3Hl5fNHjnw00zwPf3KeLPBs1qod8GaEcOpPQ4PBryj9or4exT\\/ALS9jpOmWfmSatDabI0OGZ5JPLIHb0x7mvoG58DeBfC90mhaW01rfREK8kVq0Qdc5JIxtI9O9cb4v8Oadrn7V3w4aa3MiCZftIz95Y5kK89shj+VergcUvbOV9LHhZngr0FBJXv0P1G+Eei6F4I8Gab4I8KWa2+naTYRWtlAv8MaDAzjGSeST3LE9661ZXJBzXC\\/C\\/Uft0XnBsrtGPpXbI6nGDXp25nc+LkveP0dZSelMxzipKY2ck\\/rXpWRi9zwb9vm7L\\/DTTdMMKsp1qGYk\\/wsqvjH615b8IvD+jx2VvZzMsYuAPPmEeSB6jNeq\\/t5aZcXfw2sb+2YBbbVIzKfXcCoH8\\/zr5m\\/4WHdaHo8Op2t61qYIxvd5ioQAcnjnHavkc9mo41N9kff8KxTwTV+rOr+M\\/i\\/wT8ORc3lzdwypbvskklA9cKcg8HHp6V5v8FPGHxD+OXiGfxF4ciSz8LaTf8AltcsCXvZcZCKOyLlSSevAA5JHlXiK78UftBeOoLe21KKPQba7D3btvIuCMZLMy\\/OODwi4BJyx6D1XxDb\\/FnwV4Ht9E\\/Zt8e6boN9JcCaWLWtLNzFID975UZSvCrjB4xXi04Sq1rpaH2bnSo0LX1PeIfDGs6\\/ZzQ21uryWdmZJvLjIZMc72yfunHSvg39sLSF1XxO89xFbpJNMibGz8ik8nj6frX0D4n\\/AG1Pi38HPh9cS\\/FFS93PYmO\\/utIDGCdiNoIQ\\/MBk8DnFfnJ+1B+0r8Ydd8YzXHh7wFqTSuxCm+Roosbu4PLD6V2VKLm0ob9Thp1lFOUnp0sey\\/CT4ieMP2W\\/FNlpfiC+h1Lw1rEiDriW0Y5AGW+8mBX1j4pk8E+I\\/CC6rplnBIJ1ASaEjoec579a\\/LjT\\/iH8XfHdxav8Sdlv9nmRmW0uCRtX7qqD04617n8Nf2hdU8P6Y3hi11sXMZU+VBcTBWUY6Lnr9BXPWpyprVa+R0UpU6mt9C78dtH8PJcTWVswWdCwR9w5Oe\\/rXm\\/wk8P6Ne\\/EWLxPfQCW8sLGWOzYjOzdIuSPfjAqj8Svihf3PiCeS8OBISu3uM5wa1fgvPCddknRmc\\/ZwrexLqf6GvRy1NNOXU+dz2ajSlydD7M+B9wzaNu6nGDmvRonJIGOODXmfwcKQ6RH5bfw9+9ei280hYH1FfQH5\\/Ja6H6VU0uc4Ap2360jKMZA5r1Dl5Thf2gPAp8c\\/C\\/VdHgCtci2aa1V+nmopZf1GPxr89vEsE2sQaj4bj2iaW1d4EmXaGB3AcduR07YPpX6ezxC4RomPVSM18Rfto\\/s+6r8PPiHD8TPDtqx0jUHIknhwBbTuSXjbHI3csD07Cvnc+wftaKqparc+r4ZxqoVnQk7J7Hytf8AxutP2etItJdW8H3+pRx2gOpT6XYmR49pw7Kg+Y\\/gfwro\\/gj+3V+zn+0LdXkXw\\/vru7u7FRJcWS20iXNvGOMyRbdyqDjJPFadpp1rdeKFju1SXMwaPzDuLA5yCP1z3z7Vu3HwY8N\\/DDx\\/F8dfhFoVpo+r3Fkbe9vrezVPOiaQM8Mg3YdDtDAHp0BHSvFwDUoNNan286MpyvFr5nKfHe4+F\\/xJtbe81jWrvT7ayAee2lX5Jgx+XIbb1GCAMV83fG\\/40fCLVdKTw4Znup7PcUugqpgKRxhdxxg96+4viV+0X8RNV8B6v4G+IfwV8Kave3USRRS22oeUgCxbAHEkbhODn5GI4rwT9prxppN\\/oep3mk\\/BLwZ4XEvh97GVjdec8btg7o\\/LijGAAeoyc10ypS5tzOn9ZlZOh87qx+f3xC+N3wu0KdpJ7l7RC52tLwGHPIxz+ner\\/wAKV1b4qa5o9xo2kzfZLi6R7S6khZQw3ckZwcVhS\\/Cbwf4v8bP4j8RTSatNG6LG0yKkCKqhcRxg4GcdSTxzXv8A8Ob3TdGjjMNxGgtU80EpgLEo59Ng7D1NOu6dKklDWTMI0sQ6zc2kuyPN\\/wBpJLLTfi62mWOAkWyKV16Z2\\/8A6q7H9nGB7iP+1ZVJ8wqiDHXBGf1rzTVrl\\/iD48lvLcNK91eM\\/JztXd98n29PevdfhZp1tpU9tpdm52QbVAI9+a68BTtBOR89nmITvTj1Pqz4cwJbaLCXAHyDiuutrlRjHp1rkvBrbdKgU\\/8APMGugguMJjOOa9M+UP1AZt3amM5BwKbNIFXIJFVvPB+6xbnBA5r1Dld7k7EqcjvWL45s\\/CWq+FdQsvHX2NdHktWXUJdQlWOFI8H5mdsKgHYk8Fc18zft0f8ABXD9nD9jaO98IW2pR+LPGtvCzP4d0y6AjssfxXc4yIQP7i5kPoK\\/FD9oT\\/goX+1X+3742h8UfGL4mXkfhdtQceH\\/AAbpjm10+BQWxM0MZAkbI4L7mPUnmhxTi7roXTU3NWP058R+H\\/C+j\\/Ei80Hw5r0N\\/pr3L\\/2Dq9tcrKl5Bn5CsifK5C45Gc12NiZYNJXTjL8iqVBeLdubOcN7Hp0rjtL+HGlL8MdG0ayVo4tI0+CKBoSQ8IjRVVwfXIyfrT4vijceFrQ6B8QIGjkmXyxqBH7q4UjGT\\/db+dfAU61N13bTU\\/WaMZxpxU9dFc8w+OVj4jfU5G0NrVYUkKy+RfOSXADFFTHXB59K+b\\/izoPjnxiJk1G7hkgZiIs33ylQPvkkAFT0B9c19U+JrrwPPZX1zpUttLPLeO8iMRk5UfVueuB3rwPxv47+HugXdvJr8dijW37tJFhRdyRsMZPZjjrW\\/tvetbU9hKgqXNzux4Vpfwq1TSbJ9XuprdYC7iEqcIVUctx74AH8XauI+IPxBudJVvC+kXMm+aMfaSj5MhwM5\\/HtXX\\/G\\/wDaFXxg40Tw5ZDyobl5k8scuzdT7D29s15no3hm+1DUje3pMtxM2T3IzWyTT5qh4WKmqkuSht3O0+D1xpeihU1C8ggur6UJCJZQrSsBnYuT8xxzgc4r3L4cWjvrUcm8fKQSPxr5b\\/aI8K28fwjmuGlaKfTLiC6tblCQyzBwnBHIysjjj0FcR8If2wvjN8LZoZ7bX01S3AGbHWVMqEZ5CuMOn1B\\/A17eBpqvQ5o9D4vN4SoYpp9T9c\\/Dd2E0+II44Qcg1tRXAdcl+frXyR+z3\\/wUv+Cvj6C20H4hs3hHVHAVGvpN9jKfRZwBtPs4X6mvp2w1m3uYI7y2uI5YZE3pPHKGjZezKw4YH1HFayhKDszxbpn\\/2QAAAAAAAAAAAAAAAAA=\",\n                            \"index\": \"0\",\n                            \"templates\": [\n                                {\n                                    \"template_ex\": \"AAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3hoF9hIJtgm5piFVlioaSc4aMc3qPi5dgiIV0e4mBh42MfXGId4ZxhIGGbmyXg4VpgoGEo3x9ZIJudm6bj4aTc3iSfWWMh3uFiICKcpp7lYyGhoqRfmhzi3mDlH2BcoJugG2aZGNydYlzlmxvYndgloGFfYtyd3aIY5KRbZKRi4J8f3d0kZyFgnuZgIaAiXNgYIZ0lpCGbZdxeIJeboGPfJFwgJByiXyEdIV+dI6IbZl5gYNzjn+FbIeJfX2Fc5l2dHxzboeHgYBzgIGLknuBfn1kjXRqhXeEhmuKd3tvfoF3eotxl41xf4N9coiObG+UhYWIdIeNbG6Eh41xi3WId3WQoWJvaXt5jIt0eWCSX6N1gHWXfHhleZCCgoVtiH51c46Lg3p7b5F0goF3gnx2cWxtgn2WmYNugH2idot3h3mQhHeHfX2Lgn+Kd5F0j22BgXlsfJt3d1aDhn2AcYNxfHRpgoiIeXOJZIuSc3aBc29ukLWCaG6NiINvi4CLgn50imOIjX5tdHx2YIV1gHCehHmQgXiBfIyPdY1ph3Z8kHGGd5+Cb3CClY2UfZeIc36Ad3ZYfId4fniFeX6Qcnxsi3l4a317fZV9doh5ootvY256h4hzeIOCcnOGg3Z9bn9+fnyFe4+Ff4lyg4WAZm+Id4WQgpZqdoprcnx1fnt+eWtIV09iWTV6\",\n                                    \"credential_bin_type\": \"5\"\n                                },\n                                {\n                                    \"template_ex\": \"AAADABEBywGIALIAZAcF\\/SBiVHcAAJkAAAAAAAAAAAB5h399g39vgm9shlpnioWQdISKdHiQipJhhoJ1eIiChoyLfW+GdoZ1g4GHb2+XgYVog4OCo3h5ZYRweW6bjoaTcnaOemaOhniFin6Kcpl3lIiHhYeSf2p0iHqDkn2DcoJtgG+YZ2Fxdol0lWpwX3ddmH6GfItyenaGYpCObpKRjIF9fHhzj5uGgHuXgIR\\/iXJfYYd3l46CbJVvd39fcX6Peo9xfo9yiHuCcoOAco2Hbph5gYN0jH6DboaJfHyDcph3dn5za4eFgoByfoCJjnqAf31liHVqg3iFhGyLdXtyfoF2fIxxl4xygIF9c4SQbG+Ug4OHdYeMam+Dh4tyi3WHeXSPn2RwZ3l3i4pzemORYaB1gXKXe3hjeIyBf4ZthXt0cYuIg3p6bo13goF4gHt2b29vgn2UmYJwfn2fdol3iniQg3aEfH6LgYCJdpBzkG6BgHhse5lzdVeEhHyAcYNxfHNogYeIeHGJaIqSc3eBdHBvjrKDZ2+Og4NvioGLgn50h2WFi3tsdH54YYN0gG+cg3iRgHiAfYmNdoxsh3d8kHKGeJyDcHOAkoySgZWGcn9+dXdafIZ4gHaFeH+PcXttjHR7bn19e5N6eYd6ootwYm97h4Z2dYCDcHWFhXR+cH1\\/fHuCeouDfod0g4KAZ3KId4OQg5Frd4xucHx2fnl9fAAAAAAAAAAA\",\n                                    \"credential_bin_type\": \"5\"\n                                },\n                                {\n                                    \"template_ex\": \"AAADAOcAyQGJALAAZA4J9ChYNXkAAJMAAAAAAAAAAAB3h4B+g4Bxg3BthlpniYSScoOLdHqPjpRghoR1eYSCho2Le26HeIV0goCGb22Wg4Zrg4GAont4ZIRwd2+ajYORc3qPfGWNh3qHiH+Kc5d5koqEiYiRf2hyiniGkXyDcoBvgW2XZmNydoZ0lmptYndfl36Geoxwd3eFY42RbpKRioR9e3dyj5qFg3uWf4WAiHFhYYZxlI+EcJVweIFdcoCNepFzfo9ziHuFdIZ+coyIcJp6gIF1i3+EbYWIfn2Cc5Z2dn9za4aDgYB0goKHj3yBf3tminJpg3mFhGmLdntxf4B4e4tuloxygIN8c4WObW+Th4OKc4aMaW6EiYtyjXWGdXWSoWZxa3p3i4x0emGQZKF2gHWXe3dmeI2DgYRvg391bo6Hg3t7bpB0f4F3f3l5b25sg32UmYFvgX6hdIZ3iHmRg3iGf4CIgH+LdpBzj29\\/gnlqepd3dliEiH1+cIRxfHZrg4iIeXGHaImRcXSAc3BujbODaG6OhYNwioKLg390hWSFjX1wdX13YYR2gHCch3mQgHiCfYmMdY5nhXd9kXKFd5uDcHCDk4qSfpaDcX5+eHVZfoh4fXiDdn6Qcnlri3V4bn97fZF9doh6oYtwZXN5hYh1doOEcHSEg3l8cH9+fXyBeY2DfodzgoF\\/Z3GGdYGRgpRqeIltcX10fXt7eAAAAAAAAAAA\",\n                                    \"credential_bin_type\": \"5\"\n                                },\n                                {\n                                    \"template_ex\": \"AAADAOEAfAGyANsAY+j+DStRTmQAAIcAAAAAAAAAAAB1h39+f31sgXFph1pnioSUdIaKdXiPipRihYJ2eYiEhouLfXCGeIVyg4OEcWuXhIRqhYGDonp6ZINudm6akIaRdHiOfGaMiHmGh3+IcZh7l4yFhYqRfmpzjHmDk32BcoJxgm2YY2NxdYhzlGltYnRhloCFfYxzdnaFYZCPbo+OiIN6gHdzkZmHg3qXfoWAinJhYYV0lJCDb5RwdoFecH+QeZBxfpJzh32GcYWCdY6GbZl3gIJyjH2Fa4aHfH+Cc5h1dHx2bIeGg390g3+Kj3qBf3xmjHNogneGgmuKd3txfoF2fI1zl41yfoN9coiObW6Sh4SIc4aNbG6Chotyi3aKd3eQnmVxa3x2jYh3eWKSYKB3f3OXenhmd4uCg4ZvhX52cYmJhXl6bY52gH94gHx4cm1sgX6XmoFxf32fdYp2hXiPgneGfn6MgYGKdI5yjm+BgXhse5Z3eVmFh3yAcoJwe3JogYaHeHSIZomSc3SAdHFtj7GBaG2Ng4NwiYKJgoJ0iGSHin5vd3x1X4R0gW6bhXaQgXiCfIyLd41ohnR8kHCGdZyDb3OAko6Sf5WJc3x+d3VbfoZ4gHiDeYCRdH5tinh2bYB7fJZ+dIl5o4xvZXB4h4R2d3+DcHWEgXV+cYCBfHuEe4yDf4l0hIN\\/ZnCGdYGOgpJqd4ltcnx1fnt8egAAAAAAAAAA\",\n                                    \"credential_bin_type\": \"5\"\n                                }\n                            ],\n                            \"flag\": \"1\"\n                        }\n                    ]\n                }\n            }\n        ]\n    },\n    \"DeviceResponse\": {\n        \"rows\": [\n            {\n                \"id\": \"538152248\",\n                \"code\": \"0\"\n            }\n        ],\n        \"result\": \"true\"\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https:\\/\\/support.supremainc.com\\/en\\/support\\/home\",\n        \"message\": \"Success\"\n    }\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "View RS485 Devices",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/rs485/:dev_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "rs485",
                ":dev_id"
              ],
              "variable": [
                {
                  "key": "dev_id",
                  "value": "542071155",
                  "description": "ID of the device which will be viewed"
                }
              ]
            },
            "description": "This API is used to list devices which connected using RS-485."
          },
          "response": []
        },
        {
          "name": "Delete All Event Logs in Device",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/clear_log?id=String&group_id=Integer&offset=Integer&limit=Integer",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                "clear_log"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "String",
                  "description": "Device ID(s) to clear logs from. Required.\nOne device ID: id=1001\nMultiple device ID: id=1001 1002 OR 1001+1002\nAll devices: id=*\n\nNotes:\nIn URLs, spaces must be encoded as %20\nExample encoded value:\nid=1001%201002%201003"
                },
                {
                  "key": "group_id",
                  "value": "Integer",
                  "description": "Optional\nOnly meaningful when id=*\n\nDevice group filter.\n\nNotes:\nIgnored unless id=*"
                },
                {
                  "key": "offset",
                  "value": "Integer",
                  "description": "Optional\nOnly meaningful when id=*\n\nPaging offset.\n\nNotes:\nIgnored unless id=*"
                },
                {
                  "key": "limit",
                  "value": "Integer",
                  "description": "Optional\nOnly meaningful when id=*\n\nPaging limit.\n\nNotes:\nIgnored unless id=*"
                }
              ]
            },
            "description": "Delete all event logs stored inside one or more devices.\n\nThis endpoint instructs selected devices to **remove all event logs stored locally on the device**.\n\nDeleted logs **cannot be recovered** and **cannot be restored from the server**.\n\nBefore using this API, ensure that the device event logs have already been successfully uploaded to the server.\n\nDevices that **do not store logs** are automatically excluded from the deletion process:\n\n- Slave devices\n    \n- Virtual devices\n    \n- Wiegand devices\n    \n\n#### Permissions\n\nThis endpoint requires **Administrator privileges**.\n\n#### Behavior\n\n**Case 1: Clear logs for specific devices**\n\nIf **id** contains one or more device IDs, the endpoint clears logs only for those devices.\n\nExample\n\n```\nDELETE /api/devices/clear_log?id=1001 1002 1003\nOR\nDELETE /api/devices/clear_log?id=1001+1002+1003\n\n```\n\n---\n\n**Case 2: Clear logs for all devices**\n\nIf **id=**\\*, the endpoint targets all devices.\n\nExample\n\n```\nDELETE /api/devices/clear_log?id=*\n\n```\n\n---\n\n**Case 3: Clear logs for filtered devices**\n\nIf **id=**\\*, optional filters may be used to restrict the target set.\n\nExample\n\n```\nDELETE /api/devices/clear_log?id=*&group_id=10&offset=0&limit=50\n\n```\n\nThis means:\n\n- target all devices\n    \n- restrict to group `10`\n    \n- apply paging with `offset=0` and `limit=50`\n    \n\n#### Notes\n\n- This API deletes **only the event logs stored in the device**.\n    \n- Event logs already stored on the **server are not affected**.\n    \n- Deleted logs **cannot be recovered**.\n    \n- Devices that do not store logs (Slave, Virtual, Wiegand) are automatically excluded."
          },
          "response": [
            {
              "name": "Delete All Event Logs in Device",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/devices/clear_log?id=544140034",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "devices",
                    "clear_log"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "544140034",
                      "description": "Device ID(s) to clear logs from. Required.\nOne device ID: id=1001\nMultiple device ID: id=1001 1002 OR 1001+1002\nAll devices: id=*\nNotes:\nIn URLs, spaces must be encoded as %20\nExample encoded value:\nid=1001%201002%201003"
                    },
                    {
                      "key": "group_id",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nDevice group filter.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    },
                    {
                      "key": "offset",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging offset.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging limit.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    }
                  ]
                }
              },
              "_postman_previewlanguage": null,
              "header": null,
              "cookie": [],
              "body": "{\r\n    \"DeviceResponse\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"544140034\",\r\n                \"code\": \"0\"\r\n            }\r\n        ],\r\n        \"result\": \"true\"\r\n    },\r\n    \"Response\": {\r\n        \"code\": \"0\",\r\n        \"link\": \"https://support.supremainc.com/en/support/home\",\r\n        \"message\": \"Success\"\r\n    }\r\n}"
            },
            {
              "name": "Clear Logs for Multiple Devices",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/devices/clear_log?id=544140034 543408590",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "devices",
                    "clear_log"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "544140034 543408590",
                      "description": "Device ID(s) to clear logs from. Required.\nOne device ID: id=1001\nMultiple device ID: id=1001 1002 OR 1001+1002\nAll devices: id=*\nNotes:\nIn URLs, spaces must be encoded as %20\nExample encoded value:\nid=1001%201002%201003"
                    },
                    {
                      "key": "group_id",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nDevice group filter.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    },
                    {
                      "key": "offset",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging offset.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging limit.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    }
                  ]
                }
              },
              "_postman_previewlanguage": null,
              "header": null,
              "cookie": [],
              "body": "{\r\n    \"DeviceResponse\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"543408590\",\r\n                \"code\": \"0\"\r\n            },\r\n            {\r\n                \"id\": \"544140034\",\r\n                \"code\": \"0\"\r\n            }\r\n        ],\r\n        \"result\": \"true\"\r\n    },\r\n    \"Response\": {\r\n        \"code\": \"0\",\r\n        \"link\": \"https://support.supremainc.com/en/support/home\",\r\n        \"message\": \"Success\"\r\n    }\r\n}"
            },
            {
              "name": "Clear Logs for All Devices",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/devices/clear_log?id=*",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "devices",
                    "clear_log"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "*",
                      "description": "Device ID(s) to clear logs from. Required.\nOne device ID: id=1001\nMultiple device ID: id=1001 1002 OR 1001+1002\nAll devices: id=*\nNotes:\nIn URLs, spaces must be encoded as %20\nExample encoded value:\nid=1001%201002%201003"
                    },
                    {
                      "key": "group_id",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nDevice group filter.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    },
                    {
                      "key": "offset",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging offset.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging limit.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    }
                  ]
                }
              },
              "_postman_previewlanguage": null,
              "header": null,
              "cookie": [],
              "body": "{\r\n    \"DeviceResponse\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"538152248\",\r\n                \"code\": \"0\"\r\n            },\r\n            {\r\n                \"id\": \"543408590\",\r\n                \"code\": \"0\"\r\n            },\r\n            {\r\n                \"id\": \"544140034\",\r\n                \"code\": \"0\"\r\n            }\r\n        ],\r\n        \"result\": \"true\"\r\n    },\r\n    \"Response\": {\r\n        \"code\": \"0\",\r\n        \"link\": \"https://support.supremainc.com/en/support/home\",\r\n        \"message\": \"Success\"\r\n    }\r\n}"
            },
            {
              "name": "Clear Logs for All Devices Matching a Group",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/devices/clear_log?id=*&group_id=2",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "devices",
                    "clear_log"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "*",
                      "description": "Device ID(s) to clear logs from. Required.\nOne device ID: id=1001\nMultiple device ID: id=1001 1002 OR 1001+1002\nAll devices: id=*\nNotes:\nIn URLs, spaces must be encoded as %20\nExample encoded value:\nid=1001%201002%201003"
                    },
                    {
                      "key": "group_id",
                      "value": "2",
                      "description": "Optional\nOnly meaningful when id=*\n\nDevice group filter.\n\nNotes:\nIgnored unless id=*"
                    },
                    {
                      "key": "offset",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging offset.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    },
                    {
                      "key": "limit",
                      "value": "Integer",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging limit.\n\nNotes:\nIgnored unless id=*",
                      "disabled": true
                    }
                  ]
                }
              },
              "_postman_previewlanguage": null,
              "header": null,
              "cookie": [],
              "body": "{\r\n    \"DeviceResponse\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"543408590\",\r\n                \"code\": \"0\"\r\n            }\r\n        ],\r\n        \"result\": \"true\"\r\n    },\r\n    \"Response\": {\r\n        \"code\": \"0\",\r\n        \"link\": \"https://support.supremainc.com/en/support/home\",\r\n        \"message\": \"Success\"\r\n    }\r\n}"
            },
            {
              "name": "Clear Logs for Paged Filtered Results",
              "originalRequest": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/devices/clear_log?id=*&group_id=2&offset=0&limit=1",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "devices",
                    "clear_log"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "*",
                      "description": "Device ID(s) to clear logs from. Required.\nOne device ID: id=1001\nMultiple device ID: id=1001 1002 OR 1001+1002\nAll devices: id=*\nNotes:\nIn URLs, spaces must be encoded as %20\nExample encoded value:\nid=1001%201002%201003"
                    },
                    {
                      "key": "group_id",
                      "value": "2",
                      "description": "Optional\nOnly meaningful when id=*\n\nDevice group filter.\n\nNotes:\nIgnored unless id=*"
                    },
                    {
                      "key": "offset",
                      "value": "0",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging offset.\n\nNotes:\nIgnored unless id=*"
                    },
                    {
                      "key": "limit",
                      "value": "1",
                      "description": "Optional\nOnly meaningful when id=*\n\nPaging limit.\n\nNotes:\nIgnored unless id=*"
                    }
                  ]
                }
              },
              "_postman_previewlanguage": null,
              "header": null,
              "cookie": [],
              "body": "{\r\n    \"DeviceResponse\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"543408590\",\r\n                \"code\": \"0\"\r\n            },\r\n            {\r\n                \"id\": \"544140034\",\r\n                \"code\": \"0\"\r\n            }\r\n        ],\r\n        \"result\": \"true\"\r\n    },\r\n    \"Response\": {\r\n        \"code\": \"0\",\r\n        \"link\": \"https://support.supremainc.com/en/support/home\",\r\n        \"message\": \"Success\"\r\n    }\r\n}"
            }
          ]
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Door Groups",
      "item": [
        {
          "name": "View All Door Groups",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/door_groups/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "door_groups",
                "search"
              ]
            },
            "description": "This API is used to view all available door groups.\n\nIt is required to put {} on the body parameter to run the API successfully."
          },
          "response": []
        },
        {
          "name": "View All Door Groups (Sort)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"order_by\": \"depth:false\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/door_groups/only_permission_item/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "door_groups",
                "only_permission_item",
                "search"
              ]
            },
            "description": "This API is used to view all door groups while sorting the response using available fields.\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| order_by | String | Y | Sort the response records by value which inputted on this parameter |\n| :boolean | String | Y | Value which the sorting will be based on. Available fields: `id`, `name`, `depth` |"
          },
          "response": []
        },
        {
          "name": "Create Door Group",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DoorGroup\": {\r\n        \"parent_id\": {\r\n            \"id\": 47\r\n        },\r\n        \"depth\": 1,\r\n        \"name\": \"AAAAA5q\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/door_groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "door_groups"
              ]
            },
            "description": "This API is used to create door groups.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| parent_id:id | Number | Y | Parent ID of the group. |\n| depth | Number | Y | Depth of the group in accordance with the parent group (parent depth+1). Value between 1 to 8. |\n| name | String | Y | Name of the group. Do not put empty value on this parameter. Max 48 characters. |\n\n#### Known issue:\n\n- Duplicate group name within one parent group\n    \n- Depth value not within 1-8\n    \n- Using `parent_id` which doesn't exist will result in success but the created group will not be visible.\n    \n- Using empty value on name will success creating a door with name: undefined. This door can't be deleted. To resolve this, update the door name then it will be able to be deleted."
          },
          "response": []
        },
        {
          "name": "Delete Door Group",
          "request": {
            "method": "DELETE",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/door_groups?id=33",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "door_groups"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "33",
                  "description": "ID of the door which will be deleted"
                }
              ]
            },
            "description": "This API is used to delete door group.\n\nPut the door's ID on the id parameters of this API to delete door.\n\n#### Note:\n\n- Deleting parent group will also delete child group\n    \n- Deleting groups with door(s) will also remove door(s) under that group. This will consequently remove doors from Access Levels\n    \n- Can't delete groups with `parent_id` which doesn't exist\n    \n- Can't delete groups with undefined name"
          },
          "response": []
        },
        {
          "name": "Update Door Group",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DoorGroup\": {\r\n        \"name\": \"New11\",\r\n        \"parent_id\": {\r\n            \"id\": 45\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/door_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "door_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "42"
                }
              ]
            },
            "description": "This API is used to update door group.\n\nPut the door's ID on the id parameters of this API to update door.\n\n#### Note:\n\n- When parent_id updated, any child group will follow the parent group"
          },
          "response": []
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Doors",
      "item": [
        {
          "name": "View a Door Details",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/doors/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "{{doorID}}",
                  "description": "ID of the door which will be viewed"
                }
              ]
            },
            "description": "This API is used to view a Door details."
          },
          "response": []
        },
        {
          "name": "View All Doors",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/doors?limit=0&order_by=id:true",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "0",
                  "description": "Limit the number of records according with the value specified",
                  "type": "text"
                },
                {
                  "key": "order_by",
                  "value": "id:true",
                  "description": "Sort the records based on the id, toggle true/false to switch asceding/descending",
                  "type": "text"
                }
              ]
            },
            "description": "This API is used to view Doors which is recorded on BioStar 2 database."
          },
          "response": []
        },
        {
          "name": "View All Doors v2",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"limit\": 25,\r\n    \"search_text\": \"\",\r\n    \"door_group_id\": \"1\",\r\n    \"order_by\": \"door_group_id.name:true\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/doors/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "doors",
                "search"
              ]
            },
            "description": "This API is used to view door records from BioStar X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| limit | Number | N | Limit the number of records on the response according to the value specified |\n| search_text | String | N | Find records with the specified string |\n| door_group_id | Number | N | Limit the records to only those with door_group_id specified |\n| order_by | String | N | Sort the response by stated value (id, door_group_id.name). Toggle boolean to switch ascending or descending. |\n\nIt is required to at least put {} on the body for the API to run correctly."
          },
          "response": []
        },
        {
          "name": "Create a Door",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const jsonData = pm.response.json();\r",
                  "pm.collectionVariables.set(\"doorID\", jsonData.DoorCollection.rows[0].id);"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Door\": {\r\n        \"name\": \"Anywhere FS2\",\r\n        \"description\": \"Test\",\r\n        \"door_group_id\": {\r\n            \"id\": 1\r\n        },\r\n        \"open_timeout\": 15,\r\n        \"open_duration\": \"5\",\r\n        \"open_once\": \"true\",\r\n        \"unconditional_lock\": \"true\",\r\n        \"entry_device_id\": {\r\n            \"id\": 542353521\r\n        },\r\n        \"relay_output_id\": {\r\n            \"device_id\": {\r\n                \"id\": 542353521\r\n            },\r\n            \"relay_index\": 0\r\n        },\r\n        \"exit_button_input_id\": {\r\n            \"device_id\": {\r\n                \"id\": 542353521\r\n            },\r\n            \"input_index\": 0,\r\n            \"type\": \"1\"\r\n        },\r\n        \"sensor_input_id\": {\r\n            \"device_id\": {\r\n                \"id\": 542353521\r\n            },\r\n            \"input_index\": 1,\r\n            \"type\": \"1\",\r\n            \"apb_use_door_sensor\": \"1\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors"
              ]
            },
            "description": "This API is used to create a door.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the door |\n| description | String | N | Description of the door |\n| door_group_id:id | Number | Y | ID of the Door Group which the door will be under |\n| open_timeout | Number | N | Configure the maximum allowed time for the door to remain open. Default: 10. |\n| open_duration | Number | N | Set the duration for which the door will remain open after a user authentication is completed. When the authentication is successful, the relay will be activated for the set time. When this time elapses, the relay no longer sends the signal to the door. Open Time may vary depending on the type of door lock used. |\n| open_once | Boolean | N | Lock when door is closed: When the door sensor detects that the door is closed, the door is locked. Set this option to false if `unconditional_lock` is true. Set true to enable this parameter. Default: `false`. |\n| unconditional _lock | Boolean | N | Use Automatic Door: When using an automatic door as an entrance door, a relay can operate regardless of the status of a door sensor. Set this option as false if open_once is set to true. |\n| relay_output_id:device_id:id | Number | Y | Device ID which the relay will be used to control the door lock. |\n| relay_output_id:relay_index | Number | Y | Relay index of the device which will be used. |\n| exit_button_input_id:device_id:id | Number | Y | Device ID which will be used as exit control. |\n| exit_button_input_id:input_index | Number | Y | Exit index of the device which will be used. |\n| exit_button_input_id:type | Boolean | Y | 1: Normally Closed, 0: Normally Open |\n| sensor_input_id:device_id:id | Number | Y | Device ID which will be used as sensor control. |\n| sensor_input_id:input_index | Number | Y | Sensor index of the device which will be used. |\n| sensor_input_id:type | Boolean | Y | 1: Normally Closed, 0: Normally Open |\n| sensor_input_id:apb_use_door_sensor | Boolean | Y | Set whether to use the door sensor when using Entry Confirmed APB. |"
          },
          "response": []
        },
        {
          "name": "Update a Door",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const jsonData = pm.response.json();\r",
                  "pm.collectionVariables.set(\"doorID\", jsonData.DoorCollection.rows[0].id);"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Door\": {\r\n        \"name\": \"Anywhere FS2\",\r\n        \"description\": \"Test\",\r\n        \"door_group_id\": {\r\n            \"id\": 1\r\n        },\r\n        \"open_timeout\": 15,\r\n        \"open_duration\": \"5\",\r\n        \"open_once\": \"true\",\r\n        \"unconditional_lock\": \"true\",\r\n        \"entry_device_id\": {\r\n            \"id\": 542353521\r\n        },\r\n        \"relay_output_id\": {\r\n            \"device_id\": {\r\n                \"id\": 542353521\r\n            },\r\n            \"relay_index\": 0\r\n        },\r\n        \"exit_button_input_id\": {\r\n            \"device_id\": {\r\n                \"id\": 542353521\r\n            },\r\n            \"input_index\": 0,\r\n            \"type\": \"1\"\r\n        },\r\n        \"sensor_input_id\": {\r\n            \"device_id\": {\r\n                \"id\": 542353521\r\n            },\r\n            \"input_index\": 1,\r\n            \"type\": \"1\",\r\n            \"apb_use_door_sensor\": \"1\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the door which will be updated"
                }
              ]
            },
            "description": "This API is used to update a Door details.\n\nLeave the values to be edited, and remove everything else."
          },
          "response": []
        },
        {
          "name": "Delete Door(s)",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/doors?id={{doorID}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "{{doorID}}",
                  "description": "ID of the door which will be deleted. To delete multiple doors, separate the IDs with space."
                }
              ]
            },
            "description": "This API is used to delete Door(s)."
          },
          "response": []
        },
        {
          "name": "View Door Status",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"monitoring_permission\": true\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "status"
              ]
            },
            "description": "This API is used to view various door status information such as the door status, relay status, alarm and last event.\n\n*   Fire alarm unlocked: A state where the door designated as a fire alarm zone is unlocked because a fire has broken out.\n*   Manual Lock: A state where the door is locked because the administrator has locked it manually.\n*   Manual Unlock: A state where the door is unlocked and able to enter without an authentication because the administrator has unlocked it manually.\n*   Schedule Locked: A state where the door is locked by the schedule that has been set.\n*   Schedule Unlocked: A state where the door is unlocked by the schedule that has been set.\n*   Normal: A state where a user can enter the door after an authentication."
          },
          "response": []
        },
        {
          "name": "Clear Door Alarm",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DoorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": {{doorID}}\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/clear_alarm",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "clear_alarm"
              ]
            },
            "description": "This API is used to clear alarms of all doors. If an alarm is  \nset in the Zone, the alarm may be continuously output even if the door alarm is released.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the door which the alarm will be cleared |"
          },
          "response": []
        },
        {
          "name": "Clear Anti PassBack: All Users",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"AntiPassBackConfig\": {\r\n        \"Door\": {\r\n            \"DoorCollection\": {\r\n                \"rows\": [\r\n                    {\r\n                        \"id\": 35\r\n                    }\r\n                ]\r\n            }\r\n        },\r\n        \"User\": [],\r\n        \"UserType\": 1\r\n    },\r\n    \"target\": \"users:\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/clear_apb_ex",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "clear_apb_ex"
              ]
            },
            "description": "This API is used to reset the anti-passback violation by selecting all or each user.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the door which will be cleared |\n| User | Array | N | List of user(s) which the APB will be cleared |\n| UserType | Number | Y | AntiPassback config User Type. |\n| target | String | Y | Doors target |"
          },
          "response": []
        },
        {
          "name": "Clear Anti PassBack: Specific User(s)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"AntiPassBackConfig\": {\r\n        \"Door\": {\r\n            \"DoorCollection\": {\r\n                \"rows\": [\r\n                    {\r\n                        \"id\": 35\r\n                    }\r\n                ]\r\n            }\r\n        },\r\n        \"User\": [\r\n            {\r\n                \"user_id\": \"10\"\r\n            },\r\n            {\r\n                \"user_id\": \"12\"\r\n            }\r\n        ],\r\n        \"UserType\": 2\r\n    },\r\n    \"target\": \"users:,[object Object],[object Object]\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/clear_apb_ex",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "clear_apb_ex"
              ]
            },
            "description": "This example shows how to clear APB for specific user(s).\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the Door which will be cleared |\n| user_id | Number | Y | User ID of the user which will be cleared |\n| UserType | Number | Y | AntiPassback config User Type. |\n| target | String | Y | Doors target |"
          },
          "response": []
        },
        {
          "name": "Manual Lock Door",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DoorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": 35\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/lock",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "lock"
              ]
            },
            "description": "This API is used to lock a door manually. If you set the state to Manual Lock, the door will have remained inaccessible even if a user authentication succeeded.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the door which will be locked |"
          },
          "response": []
        },
        {
          "name": "Manual Unlock Door",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DoorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": 35\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/unlock",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "unlock"
              ]
            },
            "description": "This API is used to unlock a door manually. If you set the state to Manual Unlock, the door will have remained accessible even if a user does not authenticate.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the door which will be unlocked |"
          },
          "response": []
        },
        {
          "name": "Release Manual Lock/Unlock",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DoorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": 35\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/release",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "release"
              ]
            },
            "description": "This API is used to release the manual lock or manual unlock set by the administrator.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the door which will be released from Manual Lock/Unlock |"
          },
          "response": []
        },
        {
          "name": "Clear Timed APB",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"TimedAntiPassBackConfig\": {\r\n        \"Door\": {\r\n            \"DoorCollection\": {\r\n                \"rows\": [\r\n                    {\r\n                        \"id\": 30\r\n                    }\r\n                ]\r\n            }\r\n        },\r\n        \"User\": [\r\n            {\r\n                \"user_id\": \"1\"\r\n            }\r\n        ],\r\n        \"UserType\": 2\r\n    },\r\n    \"target\": \"users:,[object Object]\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/clear_timed_apb_ex",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "clear_timed_apb_ex"
              ]
            },
            "description": "This API is used to clear Timed APB access record.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| TimedAntiPassBackConfig.Door.DoorCollection.rows.id | Number | Y | Timed APB’s selected Door IDs. |\n| User.user_id | String | N | List of User ID which will be cleared. |\n| UserType | Number | N | 1: All, 2: Specific |\n| target | String | N | User target, all users or single user. |\n\n#### Response Example:\n\n``` json\n{\n  \"DeviceResponse\": {\n    \"rows\": [\n      {\n        \"id\": \"50335900\",\n        \"code\": \"0\"\n      }\n    ],\n    \"result\": \"true\"\n  },\n  \"Response\": {\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n```\n- DeviceResponse : The response from device.\n    - result : success/error.\n    - rows : affected devices with success/error code\n- Response : the response from web server, each with the following properties:\n    - code : success/error code.\n    - link : Suprema support link.\n    - message : Success/error message.\n\n```\n\n#### Errors:\n\nThis API uses the following error codes:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        },
        {
          "name": "Open Door",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"DoorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": 35\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/doors/open",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "open"
              ]
            },
            "description": "This API is used to open a door.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the door which will be opened. |"
          },
          "response": []
        },
        {
          "name": "View Doors with RS485",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/doors/rs485/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "doors",
                "rs485",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "1",
                  "description": "ID of the door which will be viewed"
                }
              ]
            },
            "description": "This API is used to list doors which use devices that connected to the system using RS485."
          },
          "response": []
        },
        {
          "name": "Retrieve Door Tree",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"root_id\": 1,\r\n    \"max_recursion_depth\": 7,\r\n    \"collapsed_node_ids\": [\r\n        2\r\n    ]\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/door_tree/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "door_tree",
                "search"
              ]
            },
            "description": "Retrieves the hierarchical structure of door groups and doors, including device and status information.\n\nThis endpoint is commonly used to populate door monitoring trees, access control dashboards, or group-based door management UIs.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| root_id | Number | N | The ID of the root door group to start searching from. |\n| max_recursion_depth | Number | N | Maximum depth of recursive traversal through child groups. |\n| collapsed_node_ids | Number | N | Fill with child group IDs to set `is_collapsed` parameter on response to `true`. |"
          },
          "response": []
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Elevator Groups",
      "item": [
        {
          "name": "Create Elevator Group",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ElevatorGroup\": {\r\n        \"parent_id\": {\r\n            \"id\": 1\r\n        },\r\n        \"isElevatorGroups\": true,\r\n        \"depth\": 1,\r\n        \"sync_device_groups\": [],\r\n        \"sync_devices\": [],\r\n        \"inherited\": true,\r\n        \"iconCls\": \"elevatorGroupIcon\",\r\n        \"text\": \"New Elevator Group 1\",\r\n        \"name\": \"New Elevator Group 2\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevator_groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevator_groups"
              ]
            },
            "description": "This API is used to create elevator group.\n\n- Required Values is `parent_id`, `isElevatorGroups`, `depth`, `inherited`, `name`\n    \n- Elevator groups may be created in up to 8 levels.\n    \n- Up to 48 characters may be entered for an elevator group name.\n    \n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| parent_id:id | Number | Y | ID of the parent of the elevator group which will be created |\n| isElevatorGroups | Boolean | Y | Marker for elevator group |\n| depth | Number | Y | Depth of the group in accordance with the parent group (parent depth+1). Value between 1 to 8. |\n| inherited | Boolean | Y | Inheritance marker of the group |\n| name | String | Y | Name of the elevator group |"
          },
          "response": []
        },
        {
          "name": "List Elevator Group",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/elevator_groups/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "elevator_groups",
                "search"
              ]
            },
            "description": "This API is used to list elevator groups recorded in BioStar X.\n\nIt is required to at least put {} on body for the API to run correctly."
          },
          "response": []
        },
        {
          "name": "List Elevator Group with Criteria & Permission",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"order_by\": \"depth:false\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/elevator_groups/only_permission_item/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "elevator_groups",
                "only_permission_item",
                "search"
              ]
            },
            "description": "This API is used to view elevator groups with criteria and permissions.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| order_by | String | N | Order the response results based on the specified field. |"
          },
          "response": []
        },
        {
          "name": "Update Elevator Group",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ElevatorGroup\": {\r\n        \"parent_id\": {\r\n            \"id\": 1\r\n        },\r\n        \"isElevatorGroups\": true,\r\n        \"depth\": 1,\r\n        \"sync_device_groups\": [],\r\n        \"sync_devices\": [],\r\n        \"inherited\": true,\r\n        \"iconCls\": \"elevatorGroupIcon\",\r\n        \"text\": \"New Elevator Group 1\",\r\n        \"name\": \"New Elevator Group 1\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevator_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevator_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the elevator group which will be updated"
                }
              ]
            },
            "description": "This API is used to update elevator group.\n\nUp to 48 characters may be entered for an elevator group name."
          },
          "response": []
        },
        {
          "name": "Delete Elevator Group",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v2/elevator_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "elevator_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "5",
                  "description": "ID of the elevator group which will be deleted"
                }
              ]
            },
            "description": "This API is used to delete elevator group.\n\nDeleting a group deletes all elevators in the group."
          },
          "response": []
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Elevators",
      "item": [
        {
          "name": "Create Elevator",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Elevator\": {\r\n        \"name\": \"Odds\",\r\n        \"description\": \"Odds elevator\",\r\n        \"elevator_group_id\": {\r\n            \"id\": 6,\r\n            \"name\": \"New Elevator Group 2\"\r\n        },\r\n        \"reader_devices\": [\r\n            {\r\n                \"device_id\": {\r\n                    \"id\": \"544140034\",\r\n                    \"name\": \"BioEntry W2 544140034 (192.168.1.24)\"\r\n                }\r\n            }\r\n        ],\r\n        \"control_device_id\": {\r\n            \"id\": \"544140034\",\r\n            \"name\": \"BioEntry W2 544140034 (192.168.1.24)\",\r\n            \"device_type_id\": {\r\n                \"id\": \"13\",\r\n                \"name\": \"BioEntry W2\"\r\n            }\r\n        },\r\n        \"floors\": [\r\n            {\r\n                \"name\": \"Odds - 1\",\r\n                \"elevator_device_id\": {\r\n                    \"device_id\": {\r\n                        \"id\": 788930600,\r\n                        \"name\": \"OM-120 788930600\"\r\n                    },\r\n                    \"relay_index\": 0\r\n                },\r\n                \"order\": 0\r\n            },\r\n            {\r\n                \"name\": \"Odds - 2\",\r\n                \"elevator_device_id\": {\r\n                    \"device_id\": {\r\n                        \"id\": 788930600,\r\n                        \"name\": \"OM-120 788930600\"\r\n                    },\r\n                    \"relay_index\": 1\r\n                },\r\n                \"order\": 1\r\n            },\r\n            {\r\n                \"name\": \"Odds - 3\",\r\n                \"elevator_device_id\": {\r\n                    \"device_id\": {\r\n                        \"id\": 788930600,\r\n                        \"name\": \"OM-120 788930600\"\r\n                    },\r\n                    \"relay_index\": 2\r\n                },\r\n                \"order\": 2\r\n            },\r\n            {\r\n                \"name\": \"Odds - 4\",\r\n                \"elevator_device_id\": {\r\n                    \"device_id\": {\r\n                        \"id\": 788930600,\r\n                        \"name\": \"OM-120 788930600\"\r\n                    },\r\n                    \"relay_index\": 3\r\n                },\r\n                \"order\": 3\r\n            }\r\n        ],\r\n        \"module_devices\": [\r\n            {\r\n                \"device_id\": {\r\n                    \"id\": \"788930600\",\r\n                    \"name\": \"OM-120 788930600\"\r\n                }\r\n            }\r\n        ],\r\n        \"trigger_actions\": [],\r\n        \"active_timeout\": \"10\",\r\n        \"dual_authentication\": {\r\n            \"device\": 0,\r\n            \"approval_type\": \"0\",\r\n            \"timeout\": 15,\r\n            \"schedule_id\": {\r\n                \"id\": \"1\"\r\n            },\r\n            \"approval_groups\": []\r\n        },\r\n        \"tamper_device\": {\r\n            \"device_id\": {},\r\n            \"switch_type\": \"0\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevators",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators"
              ]
            },
            "description": "This API is used to create elevator.\n\nThe minimum values is name, elevator_group_id(id, name), reader_devices(id, name), control_device_id(id, name, device_type_id), floors(name, order, elevator_device_id, relay_index). The rest can be removed.\n\n##### Controller - `control_device_id`\n\nSelect a device that controls the elevator access permission.\n\n- Only a master device can be selected.\n    \n- You can select it from the list of registered devices.\n    \n\n##### Reader - `reader_devices`\n\nSelect a device you intend to use for authentication.\n\n- You can select a device among the master device, slave device, and Wiegand device.\n    \n- You can select up to 4 readers.\n    \n- OM-120 cannot be set as the reader.\n    \n\n##### Module - `module_devices`\n\nSelect OM-120 to control the elevator button relay.\n\n- Only OM-120 can be selected.\n    \n\n##### Total Number of Floors - `floors`\n\nEnter the total number of floors that you can move using the elevator.\n\n- Up to 192 floors can be entered."
          },
          "response": []
        },
        {
          "name": "List Elevators",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"limit\": 50,\r\n    \"search_text\": \"\",\r\n    \"elevator_group_id\": \"1\",\r\n    \"order_by\": \"elevator_group_id:false\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/elevators/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "elevators",
                "search"
              ]
            },
            "description": "This API is used to list elevators recorder in BioStar X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| limit | Number | N | Limit the response records by the number specified on this parameter |\n| search_text | String | N | Search records based on the value specified |\n| elevator_group_id | Number | N | List elevators with specified group id |\n| order_by | String | N | Sort response by specified value |\n\nIt is required to at least put {} for the API to run correctly."
          },
          "response": []
        },
        {
          "name": "View an Elevator Details",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/elevators/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "32770",
                  "description": "ID of the elevator which will be viewed"
                }
              ]
            },
            "description": "This API is used to view an elevator details."
          },
          "response": []
        },
        {
          "name": "Update Elevator",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Elevator\": {\r\n        \"name\": \"Odds\",\r\n        \"description\": \"Odds elevator\",\r\n        \"elevator_group_id\": {\r\n            \"id\": 6,\r\n            \"name\": \"New Elevator Group 2\"\r\n        },\r\n        \"reader_devices\": [\r\n            {\r\n                \"device_id\": {\r\n                    \"id\": \"544140034\",\r\n                    \"name\": \"BioEntry W2 544140034 (192.168.1.24)\"\r\n                }\r\n            }\r\n        ],\r\n        \"control_device_id\": {\r\n            \"id\": \"544140034\",\r\n            \"name\": \"BioEntry W2 544140034 (192.168.1.24)\",\r\n            \"device_type_id\": {\r\n                \"id\": \"13\",\r\n                \"name\": \"BioEntry W2\"\r\n            }\r\n        },\r\n        \"floors\": [\r\n            {\r\n                \"name\": \"Odds - 1\",\r\n                \"elevator_device_id\": {\r\n                    \"device_id\": {\r\n                        \"id\": 788930600,\r\n                        \"name\": \"OM-120 788930600\"\r\n                    },\r\n                    \"relay_index\": 0\r\n                },\r\n                \"order\": 0\r\n            },\r\n            {\r\n                \"name\": \"Odds - 2\",\r\n                \"elevator_device_id\": {\r\n                    \"device_id\": {\r\n                        \"id\": 788930600,\r\n                        \"name\": \"OM-120 788930600\"\r\n                    },\r\n                    \"relay_index\": 1\r\n                },\r\n                \"order\": 1\r\n            },\r\n            {\r\n                \"name\": \"Odds - 3\",\r\n                \"elevator_device_id\": {\r\n                    \"device_id\": {\r\n                        \"id\": 788930600,\r\n                        \"name\": \"OM-120 788930600\"\r\n                    },\r\n                    \"relay_index\": 2\r\n                },\r\n                \"order\": 2\r\n            },\r\n            {\r\n                \"name\": \"Odds - 4\",\r\n                \"elevator_device_id\": {\r\n                    \"device_id\": {\r\n                        \"id\": 788930600,\r\n                        \"name\": \"OM-120 788930600\"\r\n                    },\r\n                    \"relay_index\": 3\r\n                },\r\n                \"order\": 3\r\n            }\r\n        ],\r\n        \"module_devices\": [\r\n            {\r\n                \"device_id\": {\r\n                    \"id\": \"788930600\",\r\n                    \"name\": \"OM-120 788930600\"\r\n                }\r\n            }\r\n        ],\r\n        \"trigger_actions\": [],\r\n        \"active_timeout\": \"10\",\r\n        \"dual_authentication\": {\r\n            \"device\": 0,\r\n            \"approval_type\": \"0\",\r\n            \"timeout\": 15,\r\n            \"schedule_id\": {\r\n                \"id\": \"1\"\r\n            },\r\n            \"approval_groups\": []\r\n        },\r\n        \"tamper_device\": {\r\n            \"device_id\": {},\r\n            \"switch_type\": \"0\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevators/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "32771",
                  "description": "ID of the elevator which will be updated"
                }
              ]
            },
            "description": "This API is used to update an elevator configuration.\n\nLeave values which will be edited and remove everything else."
          },
          "response": []
        },
        {
          "name": "Delete Elevator",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/elevators?id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators"
              ],
              "query": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the elevator which will be deleted"
                }
              ]
            },
            "description": "This API is used to delete elevator."
          },
          "response": []
        },
        {
          "name": "View Elevator(s) Status",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ElevatorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"32770\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevators/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators",
                "status"
              ]
            },
            "description": "This API is used to view elevator status.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the elevator which the status will be viewed |"
          },
          "response": []
        },
        {
          "name": "Manual Lock Elevator",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ElevatorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"32770\",\r\n                \"floors\": [\r\n                    {\r\n                        \"order\": \"3\"\r\n                    }\r\n                ]\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevators/lock",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators",
                "lock"
              ]
            },
            "description": "This API is used to lock elevator access to single/multiple floor manually. If you set the state to Manual Lock, the elevator will have remained inaccessible even if a user authenticatation succeeded.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| rows:id | Number | Y | ID of the elevator which the floor will be locked |\n| floors:order | Number | Y | Index of the floor which will be updated. |\n\n`floors:order` correlates with `order` on `GET /api/elevators/:id` or with `floor_id:index` on `POST /api/elevators/status`"
          },
          "response": []
        },
        {
          "name": "Manual Unlock Elevator",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ElevatorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"32770\",\r\n                \"floors\": [\r\n                    {\r\n                        \"order\": \"3\"\r\n                    }\r\n                ]\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevators/unlock",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators",
                "unlock"
              ]
            },
            "description": "This API is used to unlock an elevator manually. If you set the state to Manual Unlock, the elevator will have remained accessible even if a user does not authenticate.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| rows:id | Number | Y | ID of the elevator which the floor will be unlocked |\n| floors:order | Number | Y | Index of the floor which will be updated. |\n\n`floors:order` correlates with `order` on `GET /api/elevators/:id` or with `floor_id:index` on `POST /api/elevators/status`"
          },
          "response": []
        },
        {
          "name": "Release Elevator Manual Lock/Unlock",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ElevatorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"32770\",\r\n                \"floors\": [\r\n                    {\r\n                        \"order\": \"3\"\r\n                    }\r\n                ]\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevators/release",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators",
                "release"
              ]
            },
            "description": "This API is used to release the manual lock or manual unlock set by the administrator. When running this API, it will also reset the status caused by `POST /api/elevators/open`\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| rows:id | Number | Y | ID of the elevator which the floor will be released from Manual Lock/Unlock |\n| floors:order | Number | Y | Index of the floor which will be updated. |\n\n`floors:order` correlates with `order` on `GET /api/elevators/:id` or with `floor_id:index` on `POST /api/elevators/status`"
          },
          "response": []
        },
        {
          "name": "Open Elevator Floor(s)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ElevatorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"32770\",\r\n                \"floors\": [\r\n                    {\r\n                        \"order\": \"3\"\r\n                    }\r\n                ]\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevators/open",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators",
                "open"
              ]
            },
            "description": "This API is used to open a floor.\n\nWill only works if the floor status is clear/default (not manually locked/unlocked or there's active alarm)\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| rows:id | Number | Y | ID of the elevator which the floor will be released from Manual Lock/Unlock |\n| floors:order | Number | Y | Index of the floor which will be updated. |\n\n`floors:order` correlates with `order` on `GET /api/elevators/:id` or with `floor_id:index` on `POST /api/elevators/status`"
          },
          "response": []
        },
        {
          "name": "Clear Elevator Alarm",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ElevatorCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"32770\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/elevators/clear_alarm",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "elevators",
                "clear_alarm"
              ]
            },
            "description": "This API is used to clear alarms of all doors. If an alarm is  \nset in the Zone, the alarm may be continuously output even if the elevator alarm is released.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the elevator which the alarm will be cleared |"
          },
          "response": []
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Firmware",
      "item": [
        {
          "name": "Update Firmware",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"FirmwareFile\": {\r\n        \"filename\":\"bs3-all_v1.1.1_20230621_sign.bin\",\r\n        \"device_type\":\"35\"\r\n    },\r\n    \"DeviceCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\":\"538201713\",\r\n                \"device_type_id\": {\r\n                    \"id\":\"35\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/firmwares/update",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "firmwares",
                "update"
              ]
            },
            "description": "This API is used to update a device's firmware.\n\nFirmware file need to be placed on `[BioStar X Install Path]\\firmware` folder.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| filename | String | Y | Complete file name (include extension) of the firmware file which will be used to update |\n| device_type | String | Y | Type of the device which the firmware file intended to |\n| id | String | Y | ID of the device which will be updated |\n| device_type_id | String | Y | Type of the device which will be updated |\n\nUse `/api/device_types` to find `device_type` and `device_type_id`, find the device's name and get the id for the parameters value."
          },
          "response": []
        },
        {
          "name": "View Firmwares Information",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/firmwares",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "firmwares"
              ]
            },
            "description": "This API is used to view firmwares information which is placed on folder `[BioStar X Install Path]\\firmware`.\n\n#### Response Information Table\n\n| **Device Type** | **Value** |\n| --- | --- |\n| BS2_DEVICE_TYPE_UNKNOWN | 0 |\n| BIOENTRY_PLUS | 1 |\n| BIOENTRY_W | 2 |\n| BIOLITE_NET | 3 |\n| XPASS | 4 |\n| XPASS_S2 | 5 |\n| SECURE_IO_2 | 6 |\n| DOOR_MODULE_20 | 7 |\n| BIOSTATION_2 | 8 |\n| BIOSTATION_A2 | 9 |\n| FACESTATION_2 | 10 |\n| IO_DEVICE | 11 |\n| BIOSTATION_L2 | 12 |\n| BIOENTRY_W2 | 13 |\n| CORESTATION_40 | 14 |\n| OUTPUT_MODULE | 15 |\n| INPUT_MODULE | 16 |\n| BIOENTRY_P2 | 17 |\n| BIOLITE_N2 | 18 |\n| XPASS2 | 19 |\n| NOT USED | 20 |\n| BIOENTRY_R2 | 21 |\n| XPASS_D2 | 22 |\n| DOOR_MODULE_21 | 23 |\n| XPASS_D2_KEYPAD | 24 |\n| FACELITE | 25 |\n| XPASS2_KEYPAD | 26 |\n| XPASS_D2_REV | 27 |\n| XPASS_D2_KEYPAD_REV | 28 |\n| FACESTATION_F2_FP | 29 |\n| FACESTATION_F2 | 30 |\n| XSTATION_2_QR | 31 |\n| XSTATION_2 | 32 |\n| IM_120 | 33 |\n| XSTATION_2_FP | 34 |\n| BIOSTATION_3 | 35 |\n| 3RD_OSDP_DEVICE | 36 |\n| 3RD_OSDP_IO_DEVICE | 37 |\n| BIOSTATION_2A | 38 |\n| UZ_OSDP_MODULE | 39 |\n| UZ_OSDP_DOOR_HANDLE | 40 |\n| UZ_OSDP_DOOR_KNOB | 41 |\n| BIOENTRY_W3 | 42 |\n\n| **Card Model** | **Value** |\n| --- | --- |\n| OMPW | 0 |\n| OIPW | 1 |\n| OEPW | 2 |\n| OHPW | 3 |\n| ODPW | 4 |\n| OAPW | 5 |\n| ODSPW | 6 |\n| PMPW | 20 |\n| PIPW | 21 |\n| PEPW | 22 |\n| PHPW | 23 |\n| PDPW | 24 |\n| PAPW | 25 |\n| PDSPW | 26 |\n| ALL | 30 |\n\n##### Model Code\n\n| **Code** | **Position** | **Description** |\n| --- | --- | --- |\n| O | Front | Optical FP Sensor |\n| P | Front | PIV Certified Optical FP Sensor |\n| A | Middle | All Cards |\n| M | Middle | Mifare & DESFire |\n| I | Middle | iClass |\n| E | Middle | EM |\n| H | Middle | HID |\n| D | Middle | Dual Frequency (Mifare/DESFire \\[13.56 MHz\\], EM \\[125 kHz\\]) |\n| DS | Middle | Dual Frequency with SAM Card Slot |\n| P | End | PoE |\n| W | End | WiFi |\n\n#### Note:\n\n- PoE and WiFi may differ by device. Please check the devices specification from Suprema website ([https://www.supremainc.com)](https://www.supremainc.com)"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Floor Levels",
      "item": [
        {
          "name": "View Floor Levels",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/floor_levels?limit&offset&order_by=id:false",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "floor_levels"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": null,
                  "description": "Limit the number of responses by n records. Remove this parameter to view all."
                },
                {
                  "key": "offset",
                  "value": null,
                  "description": "Offset the response shown by n records."
                },
                {
                  "key": "order_by",
                  "value": "id:false",
                  "description": "Order the response result either ascending or descending"
                }
              ]
            },
            "description": "This API is used to view floor levels recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "View a Floor Level Detail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/floor_levels/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "floor_levels",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "32769",
                  "description": "ID of the floor level which will be viewed"
                }
              ]
            },
            "description": "This API is used to view the details of a floor level."
          },
          "response": []
        },
        {
          "name": "Create Floor Levels",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"FloorLevel\": {\r\n        \"name\": \"aaaax\",\r\n        \"description\": \"aaaa\",\r\n        \"floor_level_items\": [\r\n            {\r\n                \"elevator_id\": {\r\n                    \"id\": 32769,\r\n                    \"floors\": [\r\n                        {\r\n                            \"id\": 5,\r\n                            \"elevator_device_id\": {\r\n                                \"device_id\": {\r\n                                    \"id\": 100000115\r\n                                },\r\n                                \"relay_index\": 4\r\n                            },\r\n                            \"index\": 4\r\n                        }\r\n                    ]\r\n                },\r\n                \"schedule_id\": {\r\n                    \"id\": \"1\"\r\n                }\r\n            },\r\n            {\r\n                \"elevator_id\": {\r\n                    \"id\": 32769,\r\n                    \"floors\": [\r\n                        {\r\n                            \"id\": 4,\r\n                            \"elevator_device_id\": {\r\n                                \"device_id\": {\r\n                                    \"id\": 100000115\r\n                                },\r\n                                \"relay_index\": 3\r\n                            },\r\n                            \"index\": 3\r\n                        }\r\n                    ]\r\n                },\r\n                \"schedule_id\": {\r\n                    \"id\": \"1\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/floor_levels",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "floor_levels"
              ]
            },
            "description": "This API is used to create floor level.\n\nYou can configure the floor access privileges by using elevators and floor information.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the floor level |\n| description | String | N | Description of the floor level |\n| elevator_id:id | Number | Y | ID of the elevator |\n| floors:id | Number | Y | ID of the floor in correspondence with the elevator |\n| device_id:id | Number | Y | Id of the device used by the elevator |\n| elevator_device_id:relay_index | Number | Y | Relay index used on the device according to the floors:id |\n| floors:index | Number | Y | Index of the floor |\n| schedule_id:id | Number | Y | ID of the schedule used |\n\n#### Known errors:\n\n- Duplicate `name`"
          },
          "response": []
        },
        {
          "name": "Update Floor Levels",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"FloorLevel\": {\r\n        \"name\": \"aaaaxxxx\",\r\n        \"description\": \"aaaa\",\r\n        \"floor_level_items\": [\r\n            {\r\n                \"elevator_id\": {\r\n                    \"id\": 32769,\r\n                    \"floors\": [\r\n                        {\r\n                            \"id\": 5,\r\n                            \"elevator_device_id\": {\r\n                                \"device_id\": {\r\n                                    \"id\": 100000115\r\n                                },\r\n                                \"relay_index\": 4\r\n                            },\r\n                            \"index\": 4\r\n                        }\r\n                    ]\r\n                },\r\n                \"schedule_id\": {\r\n                    \"id\": \"1\"\r\n                }\r\n            },\r\n            {\r\n                \"elevator_id\": {\r\n                    \"id\": 32769,\r\n                    \"floors\": [\r\n                        {\r\n                            \"id\": 4,\r\n                            \"elevator_device_id\": {\r\n                                \"device_id\": {\r\n                                    \"id\": 100000115\r\n                                },\r\n                                \"relay_index\": 3\r\n                            },\r\n                            \"index\": 3\r\n                        }\r\n                    ]\r\n                },\r\n                \"schedule_id\": {\r\n                    \"id\": \"1\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/floor_levels/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "floor_levels",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "32776",
                  "description": "ID of the floor level which will be updated"
                }
              ]
            },
            "description": "This API is used to update floor level.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the floor level |\n| description | String | N | Description of the floor level |\n| elevator_id:id | Number | Y | ID of the elevator |\n| floors:id | Number | Y | ID of the floor in correspondence with the elevator |\n| device_id:id | Number | Y | Id of the device used by the elevator |\n| elevator_device_id:relay_index | Number | Y | Relay index used on the device according to the floors:id |\n| floors:index | Number | Y | Index of the floor |\n| schedule_id:id | Number | Y | ID of the schedule used |\n\n#### Known errors:\n\n- Duplicate `name`"
          },
          "response": []
        },
        {
          "name": "Delete Floor Level",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/floor_levels/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "floor_levels",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "32775",
                  "description": "ID of the floor level which will be deleted"
                }
              ]
            },
            "description": "This API is used to delete floor levels."
          },
          "response": []
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Schedules",
      "item": [
        {
          "name": "View Schedules",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/schedules?limit&offset",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "schedules"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": null,
                  "description": "Limit the number of responses by n records. Remove this parameter to view all.",
                  "type": "text"
                },
                {
                  "key": "offset",
                  "value": null,
                  "description": "Offset the response shown by n records.",
                  "type": "text"
                }
              ]
            },
            "description": "This API is used to view all schedules recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "View a Schedule Detail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/schedules/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "schedules",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "2",
                  "description": "ID of the schedule which will be viewed"
                }
              ]
            },
            "description": "This API is used to view a schedule detail recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "Delete Schedules",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/schedules/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "schedules",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "5",
                  "description": "ID of the schedule which will be deleted"
                }
              ]
            },
            "description": "This API is used to delete schedules recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "Create Schedule (Weekly)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Schedule\": {\r\n        \"name\": \"Weekly6\",\r\n        \"description\": \"Desc\",\r\n        \"daily_schedules\": [\r\n            {\r\n                \"day_index\": 0,\r\n                \"time_segments\": []\r\n            },\r\n            {\r\n                \"day_index\": 1,\r\n                \"time_segments\": [\r\n                    {\r\n                        \"start_time\": 0,\r\n                        \"end_time\": 360\r\n                    },\r\n                    {\r\n                        \"start_time\": 1080,\r\n                        \"end_time\": 1440\r\n                    }\r\n                ]\r\n            },\r\n            {\r\n                \"day_index\": 2,\r\n                \"time_segments\": []\r\n            },\r\n            {\r\n                \"day_index\": 3,\r\n                \"time_segments\": [\r\n                    {\r\n                        \"start_time\": 0,\r\n                        \"end_time\": 1440\r\n                    }\r\n                ]\r\n            },\r\n            {\r\n                \"day_index\": 4,\r\n                \"time_segments\": []\r\n            },\r\n            {\r\n                \"day_index\": 5,\r\n                \"time_segments\": []\r\n            },\r\n            {\r\n                \"day_index\": 6,\r\n                \"time_segments\": [\r\n                    {\r\n                        \"start_time\": 900,\r\n                        \"end_time\": 960\r\n                    },\r\n                    {\r\n                        \"start_time\": 540,\r\n                        \"end_time\": 600\r\n                    },\r\n                    {\r\n                        \"start_time\": 360,\r\n                        \"end_time\": 420\r\n                    },\r\n                    {\r\n                        \"start_time\": 720,\r\n                        \"end_time\": 780\r\n                    },\r\n                    {\r\n                        \"start_time\": 1080,\r\n                        \"end_time\": 1140\r\n                    }\r\n                ]\r\n            }\r\n        ],\r\n        \"holiday_schedules\": [\r\n            {\r\n                \"holiday_group_id\": {\r\n                    \"id\": \"1\"\r\n                },\r\n                \"time_segments\": [\r\n                    {\r\n                        \"start_time\": 780,\r\n                        \"end_time\": 840\r\n                    }\r\n                ]\r\n            }\r\n        ],\r\n        \"days_of_iteration\": 7,\r\n        \"start_date\": \"2022-04-27T16:18:06.19Z\",\r\n        \"use_daily_iteration\": false\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/schedules",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "schedules"
              ]
            },
            "description": "This API example shows how to create weekly schedule.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the schedule |\n| description | String | N | Description of the schedule |\n| day_index | Number | Y | Day of the Week(0-sun, 1-mon, 2-tue, 3-wed, 4-thu, 5-fri, 6-sat) |\n| time_segments:start_time | Number | Y | Start time of the day (in minutes) |\n| time_segments:end_time | Number | Y | End time of the day (in minutes) |\n| holiday_group_id:id | Number | N | ID of the holiday group |\n| days_of_iteration | Number | N | Repeat schedule every n days |\n| start_date | Date | N | Enable schedule from specified date |\n| use_daily_iteration | Boolean | Y | Specify schedule weekly or daily. False for weekly |"
          },
          "response": []
        },
        {
          "name": "Create Schedule (Daily)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Schedule\": {\r\n        \"name\": \"Daily\",\r\n        \"description\": \"DDD\",\r\n        \"daily_schedules\": [\r\n            {\r\n                \"day_index\": 0,\r\n                \"time_segments\": [\r\n                    {\r\n                        \"start_time\": 0,\r\n                        \"end_time\": 1380\r\n                    }\r\n                ]\r\n            },\r\n            {\r\n                \"day_index\": 1,\r\n                \"time_segments\": [\r\n                    {\r\n                        \"start_time\": 1260,\r\n                        \"end_time\": 1320\r\n                    }\r\n                ]\r\n            }\r\n        ],\r\n        \"holiday_schedules\": [],\r\n        \"days_of_iteration\": 2,\r\n        \"start_date\": \"2022-04-26T00:00:00.00Z\",\r\n        \"use_daily_iteration\": true\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/schedules",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "schedules"
              ]
            },
            "description": "This API example shows how to create daily schedule.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the schedule |\n| description | String | N | Description of the schedule |\n| day_index | Number | Y | Day of the Week(0-sun, 1-mon, 2-tue, 3-wed, 4-thu, 5-fri, 6-sat) |\n| time_segments:start_time | Number | Y | Start time of the day (in minutes) |\n| time_segments:end_time | Number | Y | End time of the day (in minutes) |\n| holiday_schedules | Array | N | Holiday schedules used. |\n| days_of_iteration | Number | Y | Repeat schedule every n days |\n| start_date | Date | Y | Enable schedule from specified date |\n| use_daily_iteration | Boolean | Y | Specify schedule weekly or daily. False for weekly |"
          },
          "response": []
        },
        {
          "name": "Update a Schedule",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Schedule\": {\r\n        \"name\": \"Daily\",\r\n        \"description\": \"DDD\",\r\n        \"daily_schedules\": [\r\n            {\r\n                \"day_index\": 0,\r\n                \"time_segments\": [\r\n                    {\r\n                        \"start_time\": 0,\r\n                        \"end_time\": 1380\r\n                    }\r\n                ]\r\n            },\r\n            {\r\n                \"day_index\": 1,\r\n                \"time_segments\": [\r\n                    {\r\n                        \"start_time\": 1260,\r\n                        \"end_time\": 1320\r\n                    }\r\n                ]\r\n            }\r\n        ],\r\n        \"holiday_schedules\": [],\r\n        \"days_of_iteration\": 2,\r\n        \"start_date\": \"2022-04-26T00:00:00.00Z\",\r\n        \"use_daily_iteration\": true\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/schedules/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "schedules",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the schedule which will be updated"
                }
              ]
            },
            "description": "This API is used to update a schedule.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the schedule |\n| description | String | N | Description of the schedule |\n| day_index | Number | Y | Day of the Week(0-sun, 1-mon, 2-tue, 3-wed, 4-thu, 5-fri, 6-sat) |\n| time_segments:start_time | Number | Y | Start time of the day (in minutes) |\n| time_segments:end_time | Number | Y | End time of the day (in minutes) |\n| holiday_schedules | Array | N | Holiday schedules used. |\n| days_of_iteration | Number | Y | Repeat schedule every n days |\n| start_date | Date | Y | Enable schedule from specified date |\n| use_daily_iteration | Boolean | Y | Specify schedule weekly or daily. False for weekly |"
          },
          "response": []
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Holiday Groups",
      "item": [
        {
          "name": "View Holiday Groups",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/holiday_groups?limit&offset",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "holiday_groups"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": null,
                  "description": "Limit the number of responses by n records. Remove this parameter to view all."
                },
                {
                  "key": "offset",
                  "value": null,
                  "description": "Offset the response shown by n records."
                }
              ]
            },
            "description": "This API is used to view all holiday groups recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "Create Holiday Group",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"HolidayGroup\": {\r\n        \"name\": \"Idul Fitri 2022\",\r\n        \"description\": \"Idul Fitri for year 2022\",\r\n        \"holidays\": [\r\n            {\r\n                \"repeat_interval\": 0,\r\n                \"start_date\": \"2022-05-02T00:00:00.00Z\"\r\n            },\r\n            {\r\n                \"repeat_interval\": 0,\r\n                \"start_date\": \"2022-05-03T00:00:00.00Z\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/holiday_groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "holiday_groups"
              ]
            },
            "description": "This API is used to create holiday groups on BioStar X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the holiday group |\n| description | String | N | Description of the holiday group |\n| repeat_interval | Number | Y | 0=no repeat, 1=repeat every year |\n| start_date | Datetime | Y | Date of the holiday group |"
          },
          "response": []
        },
        {
          "name": "Update Holiday Group",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"HolidayGroup\": {\r\n        \"name\": \"Idul Fitri 2022\",\r\n        \"description\": \"Idul Fitri for year 2022\",\r\n        \"holidays\": [\r\n            {\r\n                \"repeat_interval\": 0,\r\n                \"start_date\": \"2022-05-02T00:00:00.00Z\"\r\n            },\r\n            {\r\n                \"repeat_interval\": 0,\r\n                \"start_date\": \"2022-05-03T00:00:00.00Z\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/holiday_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "holiday_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the holiday group which will be updated."
                }
              ]
            },
            "description": "This API is used to update holiday groups on BioStar X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the holiday group |\n| description | String | N | Description of the holiday group |\n| repeat_interval | Number | Y | 0=no repeat, 1=repeat every year |\n| start_date | Datetime | Y | Date of the holiday group |"
          },
          "response": []
        },
        {
          "name": "Delete Holiday Group",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/holiday_groups/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "holiday_groups",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "1",
                  "description": "ID of the holiday group which will be deleted"
                }
              ]
            },
            "description": "This API is used to delete holiday group."
          },
          "response": []
        }
      ],
      "event": [
        {
          "listen": "prerequest",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        },
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              ""
            ]
          }
        }
      ]
    },
    {
      "name": "Trigger Actions",
      "item": [
        {
          "name": "View Trigger Actions",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/trigger_actions?limit&offset",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "trigger_actions"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": null,
                  "description": "Limit the number of responses by n records. Remove this parameter to view all.",
                  "type": "text"
                },
                {
                  "key": "offset",
                  "value": null,
                  "description": "Offset the response shown by n records.",
                  "type": "text"
                }
              ]
            },
            "description": "This API is used to view all Trigger & Actions."
          },
          "response": []
        },
        {
          "name": "Create Trigger Actions (Device - Device Send Signal)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"TriggerAction\": {\r\n        \"name\": \"Test\",\r\n        \"priority\": 0,\r\n        \"schedule_id\": {\r\n            \"id\": \"1\"\r\n        },\r\n        \"trigger\": {\r\n            \"source_type\": 1,\r\n            \"event_types\": [\r\n                {\r\n                    \"code\": 18432\r\n                }\r\n            ],\r\n            \"devices\": [\r\n                {\r\n                    \"id\": 543408590\r\n                },\r\n                {\r\n                    \"id\": 543308153\r\n                }\r\n            ]\r\n        },\r\n        \"action\": {\r\n            \"device_action_id\": {\r\n                \"device_id\": {\r\n                    \"id\": 543308153\r\n                },\r\n                \"relay_signal_id\": {\r\n                    \"id\": \"1\"\r\n                },\r\n                \"relay_index\": 0\r\n            }\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/trigger_actions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "trigger_actions"
              ]
            },
            "description": "You can set the device or BioStar X to do a specific operation when a specific event has occurred at the devices, doors and zones.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a name of the trigger & action. |\n| priority | Number | Y | Priority index of the trigger & action. |\n| schedule_id:id | Number | Y | ID of the schedule which will be used by the trigger & action. |\n| trigger:source_type | Number | Y | Select a device/door/zone at which a specific event will be monitored. Multiple devices/doors/zones can be selected. The devices/doors/zones work independently even when they are disconnected from the BioStar server.  <br>1=Device, 2=Door, 3=Zone |\n| event_types:code | Number | Y | ID of the events which will trigger an action. At least one event must be selected.  <br>Event lists may be activated differently depending on the options selected in Device, Door, and Zone. |\n| devices:id | Number | Y | Select a device which performs the action. You can select a device or BioStar X to perform an action. |\n| device_action_id:device_id:id | Number | Y | ID of the device which will perform an action. |\n| device_action_id:relay_signal_id:id | Number | Y | Relay of the device which will be used to perform an action. |\n| device_action_id:relay_index | Number | Y | Relay index of the device. |"
          },
          "response": []
        },
        {
          "name": "Create Trigger Actions (Door - BioStar 2 Send Email)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"TriggerAction\": {\r\n        \"name\": \"Door\",\r\n        \"priority\": 0,\r\n        \"schedule_id\": {\r\n            \"id\": \"3\"\r\n        },\r\n        \"trigger\": {\r\n            \"source_type\": 2,\r\n            \"event_types\": [\r\n                {\r\n                    \"code\": 21504\r\n                }\r\n            ],\r\n            \"doors\": [\r\n                {\r\n                    \"id\": 5\r\n                },\r\n                {\r\n                    \"id\": 32\r\n                }\r\n            ]\r\n        },\r\n        \"action\": {\r\n            \"email_action_id\": {\r\n                \"receipients\": [\r\n                    \"agni@oxx.id\",\r\n                    \"you@axx.id\"\r\n                ]\r\n            },\r\n            \"smtp_id\": {\r\n                \"id\": \"1\"\r\n            }\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/trigger_actions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "trigger_actions"
              ]
            },
            "description": "You can set the device or BioStar X to do a specific operation when a specific event has occurred at the devices, doors and zones.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a name of the trigger & action. |\n| priority | Number | Y | Priority index of the trigger & action. |\n| schedule_id:id | Number | Y | ID of the schedule which will be used by the trigger & action. |\n| trigger:source_type | Number | Y | Select a device/door/zone at which a specific event will be monitored. Multiple devices/doors/zones can be selected. The devices/doors/zones work independently even when they are disconnected from the BioStar server.  <br>1=Device, 2=Door, 3=Zone |\n| event_types:code | Number | Y | ID of the events which will trigger an action. At least one event must be selected.  <br>Event lists may be activated differently depending on the options selected in Device, Door, and Zone. |\n| doors:id | Number | Y | ID of the door which will trigger an action. |\n| email_action_id:receipients | Number | Y | List email recipients which BioStar X will send notifications to. Use comma (,) to separate each email. |\n| smtp_id:id | Number | Y | ID of the SMTP setting which will be used to send notification email. |"
          },
          "response": []
        },
        {
          "name": "Create Trigger Actions (Zone)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"TriggerAction\": {\r\n        \"name\": \"Zone\",\r\n        \"priority\": 0,\r\n        \"schedule_id\": {\r\n            \"id\": \"4\"\r\n        },\r\n        \"trigger\": {\r\n            \"source_type\": 3,\r\n            \"event_types\": [\r\n                {\r\n                    \"code\": 41472\r\n                },\r\n                {\r\n                    \"code\": 38912\r\n                }\r\n            ],\r\n            \"zones\": [\r\n                {\r\n                    \"id\": \"32794\"\r\n                },\r\n                {\r\n                    \"id\": \"32793\"\r\n                }\r\n            ]\r\n        },\r\n        \"action\": {\r\n            \"email_action_id\": {\r\n                \"receipients\": [\r\n                    \"aaa@aaa.com\"\r\n                ]\r\n            },\r\n            \"smtp_id\": {\r\n                \"id\": \"1\"\r\n            }\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/trigger_actions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "trigger_actions"
              ]
            },
            "description": "You can set the device or BioStar X to do a specific operation when a specific event has occurred at the devices, doors and zones.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a name of the trigger & action. |\n| priority | Number | Y | Priority index of the trigger & action. |\n| schedule_id:id | Number | Y | ID of the schedule which will be used by the trigger & action. |\n| trigger:source_type | Number | Y | Select a device/door/zone at which a specific event will be monitored. Multiple devices/doors/zones can be selected. The devices/doors/zones work independently even when they are disconnected from the BioStar server.  <br>1=Device, 2=Door, 3=Zone |\n| event_types:code | Number | Y | ID of the events which will trigger an action. At least one event must be selected.  <br>Event lists may be activated differently depending on the options selected in Device, Door, and Zone. |\n| zones:id | Number | Y | ID of the zone which will trigger an action. |\n| email_action_id:receipients | Number | Y | List email recipients which BioStar X will send notifications to. Use comma (,) to separate each email. |\n| smtp_id:id | Number | Y | ID of the SMTP setting which will be used to send notification email. |"
          },
          "response": []
        },
        {
          "name": "Update Trigger Actions",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"TriggerAction\": {\r\n        \"name\": \"Door\",\r\n        \"priority\": 0,\r\n        \"schedule_id\": {\r\n            \"id\": \"3\"\r\n        },\r\n        \"trigger\": {\r\n            \"source_type\": 2,\r\n            \"event_types\": [\r\n                {\r\n                    \"code\": 21504\r\n                }\r\n            ],\r\n            \"doors\": [\r\n                {\r\n                    \"id\": 5\r\n                },\r\n                {\r\n                    \"id\": 32\r\n                }\r\n            ]\r\n        },\r\n        \"action\": {\r\n            \"email_action_id\": {\r\n                \"receipients\": [\r\n                    \"agni@oxx.id\",\r\n                    \"you@axx.id\"\r\n                ]\r\n            },\r\n            \"smtp_id\": {\r\n                \"id\": \"1\"\r\n            }\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/trigger_actions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "trigger_actions",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "2",
                  "description": "ID of the Trigger & Actions which will be updated."
                }
              ]
            },
            "description": "This API is used to update Trigger/Actions.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a name of the trigger & action. |\n| priority | Number | Y | Priority index of the trigger & action. |\n| schedule_id:id | Number | Y | ID of the schedule which will be used by the trigger & action. |\n| trigger:source_type | Number | Y | Select a device/door/zone at which a specific event will be monitored. Multiple devices/doors/zones can be selected. The devices/doors/zones work independently even when they are disconnected from the BioStar server.  <br>1=Device, 2=Door, 3=Zone |\n| event_types:code | Number | Y | ID of the events which will trigger an action. At least one event must be selected.  <br>Event lists may be activated differently depending on the options selected in Device, Door, and Zone. |\n| doors:id | Number | Y | ID of the door which will trigger an action. |\n| email_action_id:receipients | Number | Y | List email recipients which BioStar X will send notifications to. Use comma (,) to separate each email. |\n| smtp_id:id | Number | Y | ID of the SMTP setting which will be used to send notification email. |"
          },
          "response": []
        },
        {
          "name": "Delete Trigger Actions",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/trigger_actions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "trigger_actions",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "2",
                  "description": "ID of the Trigger & Action which will be deleted."
                }
              ]
            },
            "description": "This API is used to view all Trigger & Actions."
          },
          "response": []
        },
        {
          "name": "Create Multiple Trigger Actions",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"TriggerAction\": {\r\n    \"name\": \"sample triggeraction\",\r\n    \"priority\": 0,\r\n    \"schedule_id\": {\r\n      \"id\": \"1\"\r\n    },\r\n    \"is_quick_action\": \"N\",\r\n    \"trigger\": {\r\n      \"source_type\": 2,\r\n      \"event_types\": [\r\n        {\r\n          \"code\": 22016\r\n        }\r\n      ],\r\n      \"devices\": [\r\n        \r\n      ],\r\n      \"doors\": [\r\n        {\r\n          \"id\": 1\r\n        }\r\n      ],\r\n      \"zones\": [\r\n        \r\n      ]\r\n    },\r\n    \"action\": {\r\n      \"device_action_id\": {\r\n        \"device_id\": {\r\n          \"id\": 50355072\r\n        },\r\n        \"relay_signal_id\": {\r\n          \"id\": \"1\"\r\n        },\r\n        \"relay_index\": 0\r\n      },\r\n      \"email_action_id\": {\r\n        \"receipients\": [\r\n          \"abc@xyz.co\",\r\n\t\t\t\t\t\"abe@xyz.co\"\r\n        ]\r\n      },\r\n      \"smtp_id\": {\r\n        \"id\": \"1\"\r\n      },\r\n      \"door_action\": [\r\n        {\r\n          \"door_id\": {\r\n            \"id\": 1\r\n          },\r\n          \"door_signal\": 346\r\n        }\r\n      ]\r\n    }\r\n  }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/multiple/trigger_actions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "multiple",
                "trigger_actions"
              ]
            },
            "description": "This API is used to create multiple trigger actions.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a name of the trigger & action. |\n| priority | Number | Y | Priority index of the trigger & action. |\n| is_quick_action | Character | N | Fill with character “Y” or “N”. This parameter used to describe that the Trigger & Action can be use as a Quick Action |\n| schedule:id | Number | Y | ID of the schedule which will be used by the trigger & action. |\n| trigger:source_type | Number | Y | Select a device/door/zone at which a specific event will be monitored. Multiple devices/doors/zones can be selected. The devices/doors/zones work independently even when they are disconnected from the BioStar server.  <br>1=Device, 2=Door, 3=Zone |\n| event_types:code | Number | Y | ID of the events which will trigger an action. At least one event must be selected.  <br>Event lists may be activated differently depending on the options selected in Device, Door, and Zone. |\n| devices:id | Number | Y | Select a device which performs the action. You can select a device or BioStar X to perform an action. |\n| doors:id | Number | Y | ID of the door which will trigger an action. |\n| zones:id | Number | Y | ID of the zone which will trigger an action. |\n| device_action_id:device_id:id | Number | Y | ID of the device which will perform an action. |\n| device_action_id:relay_signal_id:id | Number | Y | Relay of the device which will be used to perform an action. |\n| device_action_id:relay_index | Number | Y | Relay index of the device. |\n| door_action:door_id:id | Number | Y | ID of the door which will perform an action |\n| door_action:door_signal | Number | Y | Door signal as operation of an action. Value between 345 and 348 |\n| email_action_id:recipients | Array String | Y | List email recipients which BioStar X will send notifications to. Use comma (,) to separate each email. |\n| smtp_id:id | Number | Y | ID of the SMTP setting which will be used to send notification email. |\n\n#### Response Example:\n\n``` json\n{\n  \"TriggerAction\": {\n    \"name\": \"ta 1\",\n    \"priority\": \"0\",\n    \"trigger\": {\n      \"source_type\": \"1\"\n    },\n    \"schedule_id\": {\n      \"id\": \"1\"\n    },\n    \"action\": {\n      \"id\": \"800001\",\n      \"device_action_id\": {\n        \"device_id\": {\n          \"id\": \"50355260\"\n        },\n        \"relay_index\": \"0\",\n        \"relay_signal_id\": {\n          \"id\": \"1\"\n        }\n      },\n      \"email_action_id\": {\n        \"receipients\": [\n          \"wawe@test.com\"\n        ]\n      },\n      \"smtp_id\": {\n        \"id\": \"1\"\n      }\n    }\n  },\n  \"Response\": {\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n```\n- Response : The web server response.\n    - code : success/error code.\n    - link : suprema link\n    - message : success/error message\n\n```\n\n#### Errors:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        },
        {
          "name": "Update Multiple Trigger Actions",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"TriggerAction\": {\r\n    \"name\": \"sample triggeraction\",\r\n    \"priority\": 0,\r\n    \"schedule_id\": {\r\n      \"id\": \"1\"\r\n    },\r\n    \"is_quick_action\": \"N\",\r\n    \"trigger\": {\r\n      \"source_type\": 2,\r\n      \"event_types\": [\r\n        {\r\n          \"code\": 22016\r\n        }\r\n      ],\r\n      \"devices\": [\r\n        \r\n      ],\r\n      \"doors\": [\r\n        {\r\n          \"id\": 1\r\n        }\r\n      ],\r\n      \"zones\": [\r\n        \r\n      ]\r\n    },\r\n    \"action\": {\r\n      \"device_action_id\": {\r\n        \"device_id\": {\r\n          \"id\": 50355072\r\n        },\r\n        \"relay_signal_id\": {\r\n          \"id\": \"1\"\r\n        },\r\n        \"relay_index\": 0\r\n      },\r\n      \"email_action_id\": {\r\n        \"receipients\": [\r\n          \"abc1@xyz.co\",\r\n\t\t\t\t\t\"abe2@xyz.co\"\r\n        ]\r\n      },\r\n      \"smtp_id\": {\r\n        \"id\": \"1\"\r\n      },\r\n      \"door_action\": [\r\n        {\r\n          \"door_id\": {\r\n            \"id\": 1\r\n          },\r\n          \"door_signal\": 346\r\n        }\r\n      ]\r\n    }\r\n  }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/multiple/trigger_actions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "multiple",
                "trigger_actions",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "Trigger & Action's ID"
                }
              ]
            },
            "description": "This API is used to update multiple trigger actions by ID.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a name of the trigger & action. |\n| priority | Number | Y | Priority index of the trigger & action. |\n| is_quick_action | Character | N | Fill with character “Y” or “N”. This parameter used to describe that the Trigger & Action can be use as a Quick Action |\n| schedule:id | Number | Y | ID of the schedule which will be used by the trigger & action. |\n| trigger:source_type | Number | Y | Select a device/door/zone at which a specific event will be monitored. Multiple devices/doors/zones can be selected. The devices/doors/zones work independently even when they are disconnected from the BioStar server.  <br>1=Device, 2=Door, 3=Zone |\n| event_types:code | Number | Y | ID of the events which will trigger an action. At least one event must be selected.  <br>Event lists may be activated differently depending on the options selected in Device, Door, and Zone. |\n| devices:id | Number | Y | Select a device which performs the action. You can select a device or BioStar X to perform an action. |\n| doors:id | Number | Y | ID of the door which will trigger an action. |\n| zones:id | Number | Y | ID of the zone which will trigger an action. |\n| device_action_id:device_id:id | Number | Y | ID of the device which will perform an action. |\n| device_action_id:relay_signal_id:id | Number | Y | Relay of the device which will be used to perform an action. |\n| device_action_id:relay_index | Number | Y | Relay index of the device. |\n| door_action:door_id:id | Number | Y | ID of the door which will perform an action |\n| door_action:door_signal | Number | Y | Door signal as operation of an action. Value between 345 and 348 |\n| email_action_id:recipients | Array String | Y | List email recipients which BioStar X will send notifications to. Use comma (,) to separate each email. |\n| smtp_id:id | Number | Y | ID of the SMTP setting which will be used to send notification email. |\n\n#### Response Example:\n\n``` json\n{\n  \"Response\": {\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n```\n- Response : The web server response.\n    - code : success/error code.\n    - link : suprema link\n    - message : success/error message\n\n```\n\n#### Errors:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        },
        {
          "name": "Delete Multiple Trigger Actions Copy",
          "request": {
            "method": "DELETE",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/multiple/trigger_actions?id=",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "multiple",
                "trigger_actions"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "",
                  "description": "Trigger and Action ID(s). Delimit each ID by using plus symbol (+; ex: 1+2+3)"
                }
              ]
            },
            "description": "This API is used to delete multiple trigger actions by ID.\n\n#### Response Example:\n\n``` json\n{\n  \"Response\": {\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n```\n- Response : The web server response.\n    - code : success/error code.\n    - link : suprema link\n    - message : success/error message\n\n```\n\n#### Errors:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        },
        {
          "name": "View Multiple Trigger Actions",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/multiple/trigger_actions/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "multiple",
                "trigger_actions",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "ID of the Trigger and Action which will be viewed."
                }
              ]
            },
            "description": "This API is used to view trigger actions by ID.\n\n#### Response Example:\n\n``` json\n{\n    \"TriggerAction\": {\n        \"id\": \"1\",\n        \"name\": \"sample triggeraction\",\n        \"priority\": \"0\",\n        \"trigger\": {\n            \"source_type\": \"2\",\n            \"doors\": [\n                {\n                    \"id\": \"1\",\n                    \"name\": \"door1\"\n                }\n            ],\n            \"event_types\": [\n                {\n                    \"code\": \"22016\",\n                    \"name\": \"FORCED_OPEN_ALARM\"\n                }\n            ]\n        },\n        \"schedule_id\": {\n            \"id\": \"1\",\n            \"name\": \"Always\"\n        },\n        \"action\": {\n            \"id\": \"1\",\n            \"device_action_id\": {\n                \"device_id\": {\n                    \"id\": \"50355072\"\n                },\n                \"relay_index\": \"0\",\n                \"relay_signal_id\": {\n                    \"id\": \"1\",\n                    \"name\": \"sinyal1\",\n                    \"delay\": \"0\",\n                    \"count\": \"0\",\n                    \"on_duration\": \"0\",\n                    \"off_duration\": \"0\"\n                }\n            },\n            \"email_action_id\": {\n                \"receipients\": [\n                    \"abc@xyz.co\"\n                ]\n            },\n            \"smtp_id\": {\n                \"id\": \"1\",\n                \"name\": \"aaa\",\n                \"smtp_server_addr\": \"localhost\",\n                \"smtp_server_port\": \"25\",\n                \"smtp_security\": \"1\"\n            },\n            \"door_action\": [\n                {\n                    \"door_id\": {\n                        \"id\": \"1\",\n                        \"name\": \"door1\"\n                    },\n                    \"door_signal\": \"346\"\n                }\n            ]\n        },\n        \"is_quick_action\": \"N\",\n        \"number_quick_actions\": \"0\"\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https:\\/\\/support.supremainc.com\\/en\\/support\\/home\",\n        \"message\": \"Success\"\n    }\n}\n\n```\n\n#### Response Properties:\n\n```\n- TriggerAction : a trigger action.\n    - name : The trigger action name.\n    - is_quick_action : Indicates if this trigger action is also a quick action or not.\n    - number_quick_actions : count of quick actions.\n    - priority : The trigger action priority.\n    - action : List of actions. It can be device action, door action and email action\n    - trigger : List of triggers. It can be device, door, and zone.\n- Response : The web server response.\n    - code : success/error code.\n    - link : suprema link\n    - message : success/error message\n\n```\n\n#### Errors:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Quick Action",
      "item": [
        {
          "name": "Trigger Quick Action by ID",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/quick_action/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "quick_action",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "2",
                  "description": "ID of the Quick Action which will be viewed."
                }
              ]
            },
            "description": "This API is used to trigger Quick Action by ID.\n\n#### Response Example:\n\n``` json\n{\n  \"QuickActionID\": \"1\",\n  \"Response\": {\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"Success\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n```\n- QuickActionID : quick action ID.\n- Response : The web server response.\n    - code : success/error code.\n    - link : suprema link\n    - message : success/error message\n\n```\n\n#### Errors:\n\nThis API uses the following error codes:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        },
        {
          "name": "View Trigger Action with Quick Action Enabled",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/quick_action/alarm_set",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "quick_action",
                "alarm_set"
              ]
            },
            "description": "This API is used to fetch Trigger Actions with Quick Action status enabled.\n\n#### Response Example:\n\n``` json\n{\n  \"Response\": {\n    \"code\": \"0\"\n  },\n  \"alarm_sets\": [\n    {\n      \"alarmSetUID\": 1,\n      \"name\": \"ta 1\",\n      \"prio\": 0,\n      \"scheduleUID\": 1,\n      \"alarmType\": 1,\n      \"alarmActionUID\": 800001,\n      \"quickAction\": \"Y\"\n    }\n  ]\n}\n\n```\n\n#### Response Properties:\n\n```\n- Response : The response from web server.\n    - code : success/error code.\n- alarm_sets : An array of trigger action objects, each with the following properties:\n    - alarmActionUID : The alarm action ID.\n    - alarmSetUID: The trigger action ID.\n    - alarmType: The alarm type.\n    - name : The trigger action name.\n    - prio : The priority.\n    - quickAction : is quick action enabled or not.\n    - scheduleUID : The schedule ID\n\n```\n\n#### Errors:\n\nThis API uses the following error codes:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        },
        {
          "name": "View All Quick Action",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/quick_action",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "quick_action"
              ]
            },
            "description": "This API is used to fetch all configured quick actions.\n\n#### Response Example:\n\n``` json\n{\n  \"Response\": {\n    \"code\": \"0\"\n  },\n  \"quick_action\": [\n    {\n      \"id\": 1,\n      \"name\": \"qc 1\",\n      \"description\": \"quick action test\",\n      \"order_number\": 1,\n      \"status\": \"I\",\n      \"confirm_before_run\": \"Y\",\n      \"operator_levels\": [\n        {\n          \"id\": 1,\n          \"permission\": {\n            \"id\": 1,\n            \"name\": \"Administrator\",\n            \"description\": \"this is a permission for Administrator\",\n            \"jsonText\": \"{\\n \\n   \\\"module\\\": {\\n \\n     \\\"Dashboard\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"User\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Device\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Door\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Elevator\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Zone\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"AccessControl\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Monitoring\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"TA\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Setting\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Video\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Visitor\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n  \\\"Report\\\": {\\n \\n    \\\"read\\\": true,\\n \\n    \\\"write\\\": true\\n \\n  }\\n \\n   },\\n \\n   \\\"filter\\\": {\\n \\n     \\\"UserGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"DeviceGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"DoorGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"ElevatorGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"ZoneType\\\": [\\n \\n       \\\"-1\\\"\\n \\n     ],\\n \\n     \\\"AccessGroup\\\": [\\n \\n       0\\n \\n     ],\\n \\n     \\\"GraphicMapGroup\\\": [\\n \\n       1\\n \\n     ]\\n \\n   }\\n \\n }\",\n            \"createdAt\": \"2023-11-06T10:00:55.000+00:00\"\n          }\n        }\n      ],\n      \"trigger_actions\": [\n        {\n          \"id\": 1,\n          \"alarm_set\": {\n            \"alarmSetUID\": 1,\n            \"name\": \"ta 1\",\n            \"prio\": 0,\n            \"scheduleUID\": 1,\n            \"alarmType\": 1,\n            \"alarmActionUID\": 800001,\n            \"quickAction\": \"Y\"\n          }\n        }\n      ]\n    }\n  ]\n}\n\n```\n\n#### Response Properties:\n\n```\n- Response : The web server response.\n    - code : success/error code\n- quick_action : An array of quick action objects, each with the following properties:\n    - confirm_before_run : The confirm before run flag. Y = enabled, N = disabled.\n    - description : The description of quick action.\n    - id : The quick action ID.\n    - name : The quick action name.\n    - operator_levels : The operator levels.\n    - order_number : The order number of quick action.\n    - status : The status of quick action.\n    - trigger_actions: The trigger actions.\n\n```\n\n#### Errors:\n\nThis API uses the following error codes:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        },
        {
          "name": "View All Quick Action by Permission ID",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/quick_action/permission/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "quick_action",
                "permission",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "Permission ID of the Quick Action which will be viewed."
                }
              ]
            },
            "description": "This API is used to fetch Quick Actions by Permission ID.\n\n#### Response Example:\n\n``` json\n{\n  \"Response\": {\n    \"code\": \"0\"\n  },\n  \"quick_action\": [\n    {\n      \"id\": 1,\n      \"name\": \"qc 1 bla\",\n      \"description\": \"quick action bla\",\n      \"order_number\": 2,\n      \"status\": \"I\",\n      \"confirm_before_run\": \"Y\",\n      \"operator_levels\": [\n        {\n          \"id\": 2,\n          \"permission\": {\n            \"id\": 1,\n            \"name\": \"Administrator\",\n            \"description\": \"this is a permission for Administrator\",\n            \"jsonText\": \"{\\n \\n   \\\"module\\\": {\\n \\n     \\\"Dashboard\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"User\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Device\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Door\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Elevator\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Zone\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"AccessControl\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Monitoring\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"TA\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Setting\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Video\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Visitor\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n  \\\"Report\\\": {\\n \\n    \\\"read\\\": true,\\n \\n    \\\"write\\\": true\\n \\n  }\\n \\n   },\\n \\n   \\\"filter\\\": {\\n \\n     \\\"UserGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"DeviceGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"DoorGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"ElevatorGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"ZoneType\\\": [\\n \\n       \\\"-1\\\"\\n \\n     ],\\n \\n     \\\"AccessGroup\\\": [\\n \\n       0\\n \\n     ],\\n \\n     \\\"GraphicMapGroup\\\": [\\n \\n       1\\n \\n     ]\\n \\n   }\\n \\n }\",\n            \"createdAt\": \"2023-11-06T10:00:55.000+00:00\"\n          }\n        }\n      ],\n      \"trigger_actions\": [\n        {\n          \"id\": 2,\n          \"alarm_set\": {\n            \"alarmSetUID\": 1,\n            \"name\": \"ta 1\",\n            \"prio\": 0,\n            \"scheduleUID\": 1,\n            \"alarmType\": 1,\n            \"alarmActionUID\": 800001,\n            \"quickAction\": \"Y\"\n          }\n        }\n      ]\n    }\n  ]\n}\n\n```\n\n#### Response Properties:\n\n```\n- Response : The web server response.\n    - code : success/error code\n- quick_action : An array of quick action objects, each with the following properties:\n    - confirm_before_run : The confirm before run flag. Y = enabled, N = disabled.\n    - description : The description of quick action.\n    - id : The quick action ID.\n    - name : The quick action name.\n    - operator_levels : The operator levels.\n    - order_number : The order number of quick action.\n    - status : The status of quick action.\n    - trigger_actions: The trigger actions.\n\n```\n\n#### Errors:\n\nThis API uses the following error codes:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        },
        {
          "name": "View Quick Action by ID",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/quick_action/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "quick_action",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "",
                  "description": "ID of the Quick Action which will be viewed."
                }
              ]
            },
            "description": "This API is used to fetch Quick Action information by ID.\n\n#### Response Example:\n\n``` json\n{\n  \"Response\": {\n    \"code\": \"0\"\n  },\n  \"quick_action\": [\n    {\n      \"id\": 1,\n      \"name\": \"qc 1 bla\",\n      \"description\": \"quick action bla\",\n      \"order_number\": 2,\n      \"status\": \"I\",\n      \"confirm_before_run\": \"Y\",\n      \"operator_levels\": [\n        {\n          \"id\": 2,\n          \"permission\": {\n            \"id\": 1,\n            \"name\": \"Administrator\",\n            \"description\": \"this is a permission for Administrator\",\n            \"jsonText\": \"{\\n \\n   \\\"module\\\": {\\n \\n     \\\"Dashboard\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"User\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Device\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Door\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Elevator\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Zone\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"AccessControl\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Monitoring\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"TA\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Setting\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Video\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n     \\\"Visitor\\\": {\\n \\n       \\\"read\\\": true,\\n \\n       \\\"write\\\": true\\n \\n     },\\n \\n  \\\"Report\\\": {\\n \\n    \\\"read\\\": true,\\n \\n    \\\"write\\\": true\\n \\n  }\\n \\n   },\\n \\n   \\\"filter\\\": {\\n \\n     \\\"UserGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"DeviceGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"DoorGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"ElevatorGroup\\\": [\\n \\n       1\\n \\n     ],\\n \\n     \\\"ZoneType\\\": [\\n \\n       \\\"-1\\\"\\n \\n     ],\\n \\n     \\\"AccessGroup\\\": [\\n \\n       0\\n \\n     ],\\n \\n     \\\"GraphicMapGroup\\\": [\\n \\n       1\\n \\n     ]\\n \\n   }\\n \\n }\",\n            \"createdAt\": \"2023-11-06T10:00:55.000+00:00\"\n          }\n        }\n      ],\n      \"trigger_actions\": [\n        {\n          \"id\": 2,\n          \"alarm_set\": {\n            \"alarmSetUID\": 1,\n            \"name\": \"ta 1\",\n            \"prio\": 0,\n            \"scheduleUID\": 1,\n            \"alarmType\": 1,\n            \"alarmActionUID\": 800001,\n            \"quickAction\": \"Y\"\n          }\n        }\n      ]\n    }\n  ]\n}\n\n```\n\n#### Response Properties:\n\n```\n- Response : The web server response.\n    - code : success/error code\n- quick_action : An array of quick action objects, each with the following properties:\n    - confirm_before_run : The confirm before run flag. Y = enabled, N = disabled.\n    - description : The description of quick action.\n    - id : The quick action ID.\n    - name : The quick action name.\n    - operator_levels : The operator levels.\n    - order_number : The order number of quick action.\n    - status : The status of quick action.\n    - trigger_actions: The trigger actions.\n\n```\n\n#### Errors:\n\nThis API uses the following error codes:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        },
        {
          "name": "Save/Update/Delete Quick Action",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"QuickActions\": [\r\n        {\r\n            \"name\": \"qa 1\",\r\n            \"description\": \"sfsf\",\r\n            \"confirm_before_run\": \"Y\",\r\n            \"operator_level_ids\": [\r\n                2,\r\n                3\r\n            ],\r\n            \"trigger_action_ids\": [\r\n                3\r\n            ],\r\n            \"order_number\": 1\r\n        },\r\n        {\r\n            \"name\": \"qa 2\",\r\n            \"description\": \"dsfsdf\",\r\n            \"confirm_before_run\": \"Y\",\r\n            \"operator_level_ids\": [\r\n                1,\r\n                254\r\n            ],\r\n            \"trigger_action_ids\": [\r\n                4\r\n            ],\r\n            \"order_number\": 2,\r\n            \"id\": 1\r\n        }\r\n    ]\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/quick_action",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "quick_action"
              ]
            },
            "description": "This API is used to save/update/delete Quick Action.\n\n`To CREATE:` Fill in all Quick Action(s) parameter (excluding ID). It is possible to create multiple Quick Action in one payload.  \nIn the case creating new one while there's existing Quick Action(s), the new one doesn't require ID while the existing require it.\n\n`To DELETE:` Fill in all Quick Action(s) parameter (including ID). Input all Quick Action(s) besides the one that will be deleted. To delete all, simply send an empty payload.\n\n`To UPDATE:` Fill in all Quick Action(s) parameter (including ID). Input all Quick Action(s) including any which will not be updated.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Quick Action name. |\n| description | String | Y | Quick Action description. |\n| confirm_before_run | String | Y | Confirmation before run (enabled/disabled). Y = enabled, N = disabled. |\n| operator_level_ids | Array | Y | List Operator Level ID(s) which allowed to run the Quick Action. |\n| trigger_action_ids | Array | Y | List Trigger & Action ID(s) which will be executed when Quick Action triggered. |\n| order_number | Number | Y | Quick Action order number. |\n| id | Number | N | Quick Action's ID. Will be generated after Quick Action created. Required to be filled when update or adding. |\n\n#### Response Example:\n\n``` json\n{\n  \"Response\": {\n    \"code\": \"0\"\n  }\n}\n\n```\n\n#### Response Properties:\n\n```\n- Response : The web server response.\n    - code : success/error code.\n\n```\n\n#### Errors:\n\nThis API uses the following error codes:\n\n- `400 Bad Request`: The request was malformed or missing required parameters.\n    \n- `401 Unauthorized`: The API key provided was invalid or missing.\n    \n- `404 Not Found`: The requested resource was not found.\n    \n- `500 Internal Server Error`: An unexpected error occurred on the server."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Setting",
      "item": [
        {
          "name": "Active Directory",
          "item": [
            {
              "name": "Check Active Directory Connection",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"serverAddress\": \"\",\r\n    \"userName\": \"3323232-1111-33b6-a0a0-dfeq6bc7a762\",\r\n    \"password\": \"asdfasdfas~!2sdfsdfasdf\",\r\n    \"userDomainName\": \"test.onmicrosoft.com\",\r\n    \"useSSL\": false,\r\n    \"adlogin\": false,\r\n    \"adType\": \"E\",\r\n    \"scheduleSyncInterval\": 0,\r\n    \"adEnable\": \"0\",\r\n    \"syncEvtCheck\": false,\r\n    \"resetSync\": false,\r\n    \"RedirectionUri\": \"https://127.0.0.1/api/v2/entraid/auth\",\r\n    \"syncType\": \"N\",\r\n    \"prevAdType\": \"E\",\r\n    \"prevDomainName\": \"test.onmicrosoft.com\",\r\n    \"prevServerAddr\": \"\"\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/adserverconnect",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "adserverconnect"
                  ]
                },
                "description": "This API is used to test BioStar X connection with Windows Active Directory.\n\nSuccessful connection will return `code : 0`.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| serverAddress | String | Y | IP Address of the Domain Controller |\n| userName | String | Y | User Name which will be used to connect to the Domain Controller |\n| password | String | Y | User Name's corresponding password |\n| userDomainName | String | Y | BaseDN of the Domain Controller |\n| useSSL | Boolean | Y | Option to use encryption when communicating with a Windows Active Directory server.  <br>  <br>Install Active Directory Certificate Services and set the keystore password by referring to Active Directory Encryption. |\n| adlogin | Boolean | Y | Enable logging into BioStar X using the Windows Active Directory account. |\n| RedirectionUri | String | Y | Required for EntraId interworking. |\n| adEnable | String | Y | Set to 0. |\n| adType | String | Y | Interworking target classification.  <br>Active Directory: A  <br>EntraId: E |\n| prevAdType | String | Y | It is required to enter the previous connection information when modifying the interworking target. If there is no change, enter the current connection information. |\n| prevDomainName | String | Y | It is required to enter the previous connection information when modifying the interworking target. If there is no change, enter the current connection information. |\n| prevServerAddr | String | Y | It is required to enter the previous connection information when modifying the interworking target. If there is no change, enter the current connection information. |\n| resetSync | Boolean | Y | Delete existing users and user groups due to changes in connection information and set them to **true** if new settings are required. default is **false**. |\n| scheduleSyncInterval | Number | Y | Set the time interval for automatic synchronization.  <br>0: Manual synchronization  <br>30 to 10080: Automatic synchronization |\n| syncEvtCheck | Boolean | Y | Settings for whether to leave event logs on BioStar X.  <br>**true**: event logs are kept on BioStar X as usual. |\n| syncType | String | Y | Toggle automatic synchronization.  <br>Manual synchronization: N  <br>Automatic synchronization: A |\n\nSee these articles for more information on connecting BioStar X with Active Directory:\n\n- [https://support.supremainc.com/en/support/solutions/articles/24000044140](https://support.supremainc.com/en/support/solutions/articles/24000044140)\n    \n- [https://support.supremainc.com/en/support/solutions/articles/24000041940--biostar-2-how-to-confirm-active-directory-information/en](https://support.supremainc.com/en/support/solutions/articles/24000041940--biostar-2-how-to-confirm-active-directory-information/en)"
              },
              "response": []
            },
            {
              "name": "User Group Search",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "DC=domain,DC=com",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/adUserGroupList",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "adUserGroupList"
                  ]
                },
                "description": "To run BioStar X AD APIs, it is required to be connected to the AD server.\n\nThis API is used to get User Group information from the Domain Controller.\n\nIt is required to put domain name information on the body.\n\nThe response value is returned in JSON format. At this time, `Collection.rows.userGroups` is used for the next user group update."
              },
              "response": []
            },
            {
              "name": "User Group Update",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"allUserGroup\": true,\r\n    \"dn\": \"DC=domain,DC=com\",\r\n    \"lastSyncVersion\": 0,\r\n    \"userGroups\": [\r\n        {\r\n            \"id\": 0,\r\n            \"dn\": \"oddtest.id\",\r\n            \"name\": \"oddtest.id\",\r\n            \"objectGuid\": \"oddtest.id\",\r\n            \"children\": [\r\n                {\r\n                    \"id\": 1,\r\n                    \"dn\": \"OU=Domain Controllers,DC=oddtest,DC=id\",\r\n                    \"name\": \"Domain Controllers\",\r\n                    \"objectGuid\": \"0921243F0254453F3F3F72273F4F7C\",\r\n                    \"children\": [],\r\n                    \"isGroup\": true\r\n                }\r\n            ],\r\n            \"isGroup\": true\r\n        }\r\n    ],\r\n    \"userGroupFilters\": [\r\n        {\r\n            \"id\": 10,\r\n            \"name\": \"Guests\"\r\n        }\r\n    ]\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/adUserGroupFilterSetting",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "adUserGroupFilterSetting"
                  ]
                },
                "description": "Based on the user group information queried in User Group Search, the user group which will be linked is updated.\n\nUpdate the user group and save it to the Biostar X server.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| allUserGroup | Boolean | Y | Toggle True when selecting all User Groups. |\n| dn | String | Y | Domain Name |\n| lastSyncVersion | Number | Y | Set to 0 |\n| userGroups | Array | Y | Put Collection.rows.userGroups from User Group Search |\n| userGroupFilters | Array | Y | Place the id and name of the user groups to be synchronized into an array. |"
              },
              "response": []
            },
            {
              "name": "Change AD User Mapping",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "[\r\n    {\r\n        \"columnm\": \"usrid\",\r\n        \"adcolumnm\": \"initials\",\r\n        \"use\": \"true\",\r\n        \"columnmdescription\": \"User ID\"\r\n    },\r\n    {\r\n        \"columnm\": \"nm\",\r\n        \"columnmdescription\": \"User Name\",\r\n        \"use\": \"true\",\r\n        \"adcolumnm\": \"displayName\"\r\n    }\r\n]",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/changeadusrmappinglist",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "changeadusrmappinglist"
                  ]
                },
                "description": "This API is used to set the user field configuration.\n\nThe payload is in the form of a JSON array.  \nEach array has BioStar X column name (columnm), AD column name (adcolumnm), whether to use (use), and column description (columnmdescription).\n\n> \\[ \n  \n> {\"columnm\":\"usrid\",\"adcolumnm\":\"sAMAccountName\",\"use\":\"true\",\"columnmdescription\":\"userid\"} {\"columnm\":\"nm\",\"adcolumnm\":\"displayName\" ,\"use\":\"true\",\"columnmdescription\":\"User NAME\"} \n  \n> \\] \n  \n\nIf you set the payload as above, you can sync the username as well."
              },
              "response": []
            },
            {
              "name": "Synchronize",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\n    \"adType\": \"E\",\n    \"RedirectionUri\": \"https://192.168.12.161/api/v2/entraid/auth\",\n    \"scheduleSyncInterval\": 0,\n    \"syncType\": \"N\",\n    \"useSSL\": false,\n    \"adlogin\": false,\n    \"adEnable\": \"0\",\n    \"serverAddress\": \"\",\n    \"userName\": \"3323232-1111-33b6-a0a0-dfeq6bc7a762\",\n    \"password\": \"asdfasdfas~!2sdfsdfasdf\",\n    \"userDomainName\": \"test.onmicrosoft.com\",\n    \"syncEvtCheck\": true,\n    \"prevAdType\": \"N\",\n    \"prevDomainName\": \"\",\n    \"prevServerAddr\": \"\",\n    \"resetSync\": false,\n    \"useCustomField\": true,\n    \"syncMode\": \"AED\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/syncadserver",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "syncadserver"
                  ]
                },
                "description": "This API is used to synchronizes AD user information with Biostar X.\n\nIf there is no user group change or field reorganization then only this synchronization operation is sufficient.\n\nserverAddress, userName, password, userDomainName, and useSSL must be sent in the payload.\n\nlastSyncTime, lastSyncResult, lastUpdateTime fields on response are \"recent sync time with ad server\", \"recent sync result\", \"recent update time of ad server information\",  \nIt can be checked through `GET /api/v2/setting/adserversetting`\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| serverAddress | String | Y | IP Address of the Domain Controller |\n| userName | String | Y | User Name which will be used to connect to the Domain Controller |\n| password | String | Y | User Name's corresponding password |\n| userDomainName | String | Y | BaseDN of the Domain Controller |\n| useSSL | Boolean | Y | Option to use encryption when communicating with a Windows Domain Controller |\n| adType | String | N | AD type |\n| RedirectionUri | String | N | Redirection URI for Entra ID authentication |\n| scheduleSyncInterval | Integer | N | Interval for scheduled synchronization |\n| syncType | String | N | Synchronization type |\n| adlogin | Boolean | N | Option to use AD login |\n| adEnable | String | N | Option to enable AD |\n| syncEvtCheck | Boolean | N | Option to check sync events |\n| prevAdType | String | N | Previous AD type |\n| prevDomainName | String | N | Previous domain name |\n| prevServerAddr | String | N | Previous server address |\n| resetSync | Boolean | N | Option to reset synchronization |\n| useCustomField | Boolean | N | Option to use custom fields |\n| syncMode | String | N | Synchronization mode. `AE` = ADD/UPDATE, `AED` = ADD/UPDATE/DELETE. If null or omitted, defaults to `AED` (ADD/UPDATE/DELETE). |\n\n#### Response Notes:\n\nIn the `ADServerSetting` response object, the `password` and `keystorePassword` fields are masked:\n\n- `\"password\": \"****\"`\n    \n- `\"keystorePassword\": \"****\"`\n    \n\n#### Changes:\n\n- v1.0.2:\n    \n    - A new optional `syncMode` parameter is now accepted in the request body.\n        \n    - In the `ADServerSetting` response object, `password` and `keystorePassword` are now **masked** and will always appear as `\"****\"` instead of the actual values.\n        \n    - Internal error logging has been strengthened (no API surface change)."
              },
              "response": []
            },
            {
              "name": "View AD Server Setting",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/adserversetting",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "adserversetting"
                  ]
                },
                "description": "Retrieves AD server configurations."
              },
              "response": [
                {
                  "name": "AD Status",
                  "originalRequest": {
                    "method": "GET",
                    "header": [],
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/setting/adserversetting",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "setting",
                        "adserversetting"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json",
                      "description": ""
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"ADServerSettingCollection\": {\n        \"total\": 1,\n        \"rows\": [\n            {\n                \"serverAddress\": \"192.111.22.3\",\n                \"userName\": \"test\",\n                \"password\": \"test1!\",\n                \"userDomainName\": \"DC=test,DC=co,DC=kr\",\n                \"lastSyncTime\": 1748311298580,\n                \"lastSyncResult\": \"0\",\n                \"lastUpdateTime\": 1748311298580,\n                \"useSSL\": false,\n                \"adlogin\": false,\n                \"adType\": \"A\",\n                \"scheduleSyncInterval\": 0,\n                \"adEnable\": \"0\",\n                \"syncEvtCheck\": false,\n                \"resetSync\": false,\n                \"targetUserIds\": []\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"success\",\n        \"by\": \"web\"\n    }\n}"
                },
                {
                  "name": "EntraID Status",
                  "originalRequest": {
                    "method": "GET",
                    "header": [],
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/setting/adserversetting",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "setting",
                        "adserversetting"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json",
                      "description": ""
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"ADServerSettingCollection\": {\n        \"total\": 1,\n        \"rows\": [\n            {\n                \"serverAddress\": \"\",\n                \"userName\": \"3323232-1111-33b6-a0a0-dfeq6bc7a762\",\n                \"password\": \"asdfasdfas~!2sdfsdfasdf\",\n                \"userDomainName\": \"test.onmicrosoft.com\",\n                \"useSSL\": false,\n                \"adlogin\": false,\n                \"adType\": \"E\",\n                \"scheduleSyncInterval\": 0,\n                \"adEnable\": \"0\",\n                \"syncEvtCheck\": false,\n                \"resetSync\": false,\n                \"targetUserIds\": []\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"success\",\n        \"by\": \"web\"\n    }\n}"
                }
              ]
            },
            {
              "name": "View AD User Mapping List",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/adusrmappinglist",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "adusrmappinglist"
                  ]
                },
                "description": "Retrieves the mapping relationships between user attribute fields in BioStar X and those used in Active Directory or Entra ID.\n\nPlease note that the required mapping information differs between Entra ID and Active Directory."
              },
              "response": [
                {
                  "name": "When Linked with EntraID",
                  "originalRequest": {
                    "method": "GET",
                    "header": [],
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/setting/adusrmappinglist",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "setting",
                        "adusrmappinglist"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json",
                      "description": ""
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"ADUsrMappingCollection\": {\n        \"total\": 9,\n        \"rows\": [\n            {\n                \"columnm\": \"userID\",\n                \"adcolumnm\": \"none\"\n            },\n            {\n                \"columnm\": \"userName\",\n                \"adcolumnm\": \"displayName\"\n            },\n            {\n                \"columnm\": \"email\",\n                \"adcolumnm\": \"mail\"\n            },\n            {\n                \"columnm\": \"phone\",\n                \"adcolumnm\": \"businessPhones\"\n            },\n            {\n                \"columnm\": \"expiry_datetime\",\n                \"adcolumnm\": \"employeeLeaveDateTime\"\n            },\n            {\n                \"columnm\": \"department\",\n                \"adcolumnm\": \"department\"\n            },\n            {\n                \"columnm\": \"user_title\",\n                \"adcolumnm\": \"jobTitle\"\n            },\n            {\n                \"columnm\": \"usergroup\",\n                \"adcolumnm\": \"memberOf\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"success\",\n        \"by\": \"web\"\n    }\n}"
                },
                {
                  "name": "When Linked with Active Directory",
                  "originalRequest": {
                    "method": "GET",
                    "header": [],
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/setting/adusrmappinglist",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "setting",
                        "adusrmappinglist"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json",
                      "description": ""
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"ADUsrMappingCollection\": {\n        \"total\": 9,\n        \"rows\": [\n            {\n                \"columnm\": \"userID\",\n                \"adcolumnm\": \"sAMAccountName\"\n            },\n            {\n                \"columnm\": \"userName\",\n                \"adcolumnm\": \"displayName\"\n            },\n            {\n                \"columnm\": \"email\",\n                \"adcolumnm\": \"mail\"\n            },\n            {\n                \"columnm\": \"phone\",\n                \"adcolumnm\": \"telephoneNumber\"\n            },\n            {\n                \"columnm\": \"expiry_datetime\",\n                \"adcolumnm\": \"accountExpires\"\n            },\n            {\n                \"columnm\": \"department\",\n                \"adcolumnm\": \"department\"\n            },\n            {\n                \"columnm\": \"user_title\",\n                \"adcolumnm\": \"title\"\n            },\n            {\n                \"columnm\": \"usergroup\",\n                \"adcolumnm\": \"distinguishedName\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"success\",\n        \"by\": \"web\"\n    }\n}"
                }
              ]
            },
            {
              "name": "View AD Column List",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/adcolumnlist",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "adcolumnlist"
                  ]
                },
                "description": "Retrieve user property information used by Active Directory or EntraID."
              },
              "response": [
                {
                  "name": "View AD Column List",
                  "originalRequest": {
                    "method": "GET",
                    "header": [],
                    "url": {
                      "raw": ""
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json",
                      "description": ""
                    }
                  ],
                  "cookie": [],
                  "body": "{\r\n    \"List<String>\": {\r\n        \"total\": 286,\r\n        \"rows\": [\r\n            {\r\n                \"seq\": 208,\r\n                \"adcolumnm\": \"aboutMe\",\r\n                \"adtype\": \"E\"\r\n            },\r\n            {\r\n                \"seq\": 209,\r\n                \"adcolumnm\": \"accountEnabled\",\r\n                \"adtype\": \"E\"\r\n            },\r\n            {\r\n                \"seq\": 1,\r\n                \"adcolumnm\": \"accountExpires\",\r\n                \"adtype\": \"A\"\r\n            },\r\n            {\r\n                \"seq\": 2,\r\n                \"adcolumnm\": \"accountNameHistory\",\r\n                \"adtype\": \"A\"\r\n            },\r\n            {\r\n                \"seq\": 3,\r\n                \"adcolumnm\": \"aCSPolicyName\",\r\n                \"adtype\": \"A\"\r\n            },\r\n            {\r\n                \"seq\": 4,\r\n                \"adcolumnm\": \"adminCount\",\r\n                \"adtype\": \"A\"\r\n            }\r\n        ]\r\n    },\r\n    \"Response\": {\r\n        \"code\": \"0\",\r\n        \"link\": \"https://support.supremainc.com/en/support/home\",\r\n        \"message\": \"success\",\r\n        \"by\": \"web\"\r\n    },\r\n    \"ADColumnCollection\": {\r\n        \"total\": 286,\r\n        \"rows\": [\r\n            {\r\n                \"seq\": 208,\r\n                \"adcolumnm\": \"aboutMe\",\r\n                \"adtype\": \"E\"\r\n            },\r\n            {\r\n                \"seq\": 209,\r\n                \"adcolumnm\": \"accountEnabled\",\r\n                \"adtype\": \"E\"\r\n            },\r\n            {\r\n                \"seq\": 1,\r\n                \"adcolumnm\": \"accountExpires\",\r\n                \"adtype\": \"A\"\r\n            },\r\n            {\r\n                \"seq\": 2,\r\n                \"adcolumnm\": \"accountNameHistory\",\r\n                \"adtype\": \"A\"\r\n            },\r\n            {\r\n                \"seq\": 3,\r\n                \"adcolumnm\": \"aCSPolicyName\",\r\n                \"adtype\": \"A\"\r\n            },\r\n            {\r\n                \"seq\": 4,\r\n                \"adcolumnm\": \"adminCount\",\r\n                \"adtype\": \"A\"\r\n            }\r\n        ]\r\n    }\r\n}"
                }
              ]
            },
            {
              "name": "View AD User Group Filter List",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/adUserGroupFilterSetting",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "adUserGroupFilterSetting"
                  ]
                },
                "description": "View group information, subgroup information and filter information that Active Directory or EntraID is using."
              },
              "response": [
                {
                  "name": "View AD User Group Filter List",
                  "originalRequest": {
                    "method": "GET",
                    "header": [],
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/setting/adUserGroupFilterSetting",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "setting",
                        "adUserGroupFilterSetting"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json",
                      "description": ""
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"success\",\n        \"by\": \"web\"\n    },\n    \"Collection\": {\n        \"total\": 1,\n        \"rows\": [\n            {\n                \"allUserGroup\": false,\n                \"dn\": \"supremabss.onmicrosoft.com\",\n                \"lastSyncVersion\": 0,\n                \"userGroups\": [\n                    {\n                        \"id\": 0,\n                        \"dn\": \"supremabss.onmicrosoft.com\",\n                        \"name\": \"supremabss.onmicrosoft.com\",\n                        \"objectGuid\": \"supremabss.onmicrosoft.com\",\n                        \"filter\": false,\n                        \"children\": [\n                            {\n                                \"id\": 1,\n                                \"dn\": \"OU=A,DC=supremabss.onmicrosoft.com\",\n                                \"name\": \"A\",\n                                \"objectGuid\": \"e1dd535c-76ce-4181-9f3b-869eea61b0b1\",\n                                \"filter\": true,\n                                \"children\": [\n                                    {\n                                        \"id\": 2,\n                                        \"dn\": \"OU=B,OU=A,DC=supremabss.onmicrosoft.com\",\n                                        \"name\": \"B\",\n                                        \"objectGuid\": \"9745e0df-1723-4c42-8ea5-febb02865f28\",\n                                        \"filter\": true,\n                                        \"children\": [\n                                            {\n                                                \"id\": 3,\n                                                \"dn\": \"OU=C,OU=B,OU=A,DC=supremabss.onmicrosoft.com\",\n                                                \"name\": \"C\",\n                                                \"objectGuid\": \"8754dd0a-d1a6-455d-8ffc-04357322ff1e\",\n                                                \"filter\": true,\n                                                \"children\": [],\n                                                \"depth\": 3,\n                                                \"isGroup\": true\n                                            }\n                                        ],\n                                        \"depth\": 2,\n                                        \"isGroup\": true\n                                    }\n                                ],\n                                \"depth\": 1,\n                                \"isGroup\": true\n                            },\n                            {\n                                \"id\": 4,\n                                \"dn\": \"OU=Test3,DC=supremabss.onmicrosoft.com\",\n                                \"name\": \"Test3\",\n                                \"objectGuid\": \"77952318-d550-4616-b516-6a65c3f44b57\",\n                                \"filter\": true,\n                                \"children\": [],\n                                \"depth\": 1,\n                                \"isGroup\": true\n                            },\n                            {\n                                \"id\": 5,\n                                \"dn\": \"OU=Test4,DC=supremabss.onmicrosoft.com\",\n                                \"name\": \"Test4\",\n                                \"objectGuid\": \"cffad5c5-afe5-4029-a44e-4f67ba96baf9\",\n                                \"filter\": true,\n                                \"children\": [],\n                                \"depth\": 1,\n                                \"isGroup\": true\n                            },\n                            {\n                                \"id\": 6,\n                                \"dn\": \"OU=Test9,DC=supremabss.onmicrosoft.com\",\n                                \"name\": \"Test9\",\n                                \"objectGuid\": \"ea407a19-c769-4db5-b4f6-c8e2ba28fc70\",\n                                \"filter\": true,\n                                \"children\": [],\n                                \"depth\": 1,\n                                \"isGroup\": true\n                            }\n                        ],\n                        \"depth\": 0,\n                        \"isGroup\": true\n                    }\n                ],\n                \"userGroupFilters\": [\n                    {\n                        \"id\": 1,\n                        \"dn\": \"OU=A,DC=supremabss.onmicrosoft.com\",\n                        \"name\": \"A\",\n                        \"objectGuid\": \"e1dd535c-76ce-4181-9f3b-869eea61b0b1\",\n                        \"filter\": true,\n                        \"children\": [\n                            {\n                                \"id\": 2,\n                                \"dn\": \"OU=B,OU=A,DC=supremabss.onmicrosoft.com\",\n                                \"name\": \"B\",\n                                \"objectGuid\": \"9745e0df-1723-4c42-8ea5-febb02865f28\",\n                                \"filter\": true,\n                                \"children\": [\n                                    {\n                                        \"id\": 3,\n                                        \"dn\": \"OU=C,OU=B,OU=A,DC=supremabss.onmicrosoft.com\",\n                                        \"name\": \"C\",\n                                        \"objectGuid\": \"8754dd0a-d1a6-455d-8ffc-04357322ff1e\",\n                                        \"filter\": true,\n                                        \"children\": [],\n                                        \"depth\": 3,\n                                        \"isGroup\": true\n                                    }\n                                ],\n                                \"depth\": 2,\n                                \"isGroup\": true\n                            }\n                        ],\n                        \"depth\": 1,\n                        \"isGroup\": true\n                    },\n                    {\n                        \"id\": 2,\n                        \"dn\": \"OU=B,OU=A,DC=supremabss.onmicrosoft.com\",\n                        \"name\": \"B\",\n                        \"objectGuid\": \"9745e0df-1723-4c42-8ea5-febb02865f28\",\n                        \"filter\": true,\n                        \"children\": [\n                            {\n                                \"id\": 3,\n                                \"dn\": \"OU=C,OU=B,OU=A,DC=supremabss.onmicrosoft.com\",\n                                \"name\": \"C\",\n                                \"objectGuid\": \"8754dd0a-d1a6-455d-8ffc-04357322ff1e\",\n                                \"filter\": true,\n                                \"children\": [],\n                                \"depth\": 3,\n                                \"isGroup\": true\n                            }\n                        ],\n                        \"depth\": 2,\n                        \"isGroup\": true\n                    },\n                    {\n                        \"id\": 3,\n                        \"dn\": \"OU=C,OU=B,OU=A,DC=supremabss.onmicrosoft.com\",\n                        \"name\": \"C\",\n                        \"objectGuid\": \"8754dd0a-d1a6-455d-8ffc-04357322ff1e\",\n                        \"filter\": true,\n                        \"children\": [],\n                        \"depth\": 3,\n                        \"isGroup\": true\n                    },\n                    {\n                        \"id\": 4,\n                        \"dn\": \"OU=Test3,DC=supremabss.onmicrosoft.com\",\n                        \"name\": \"Test3\",\n                        \"objectGuid\": \"77952318-d550-4616-b516-6a65c3f44b57\",\n                        \"filter\": true,\n                        \"children\": [],\n                        \"depth\": 1,\n                        \"isGroup\": true\n                    },\n                    {\n                        \"id\": 5,\n                        \"dn\": \"OU=Test4,DC=supremabss.onmicrosoft.com\",\n                        \"name\": \"Test4\",\n                        \"objectGuid\": \"cffad5c5-afe5-4029-a44e-4f67ba96baf9\",\n                        \"filter\": true,\n                        \"children\": [],\n                        \"depth\": 1,\n                        \"isGroup\": true\n                    },\n                    {\n                        \"id\": 6,\n                        \"dn\": \"OU=Test9,DC=supremabss.onmicrosoft.com\",\n                        \"name\": \"Test9\",\n                        \"objectGuid\": \"ea407a19-c769-4db5-b4f6-c8e2ba28fc70\",\n                        \"filter\": true,\n                        \"children\": [],\n                        \"depth\": 1,\n                        \"isGroup\": true\n                    }\n                ]\n            }\n        ]\n    }\n}"
                }
              ]
            },
            {
              "name": "Check EntraID SSO Login Setting",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/setting/checkEntraIDSetting",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "setting",
                    "checkEntraIDSetting"
                  ]
                },
                "description": "Checks whether Entra ID SSO Login is enabled.\n\nIf the **\"BioStar X Login with Entra ID\"** option is enabled in the Directory Integration settings, the returned value is `'E'`. If it is disabled (default), the value is `'D'`."
              },
              "response": [
                {
                  "name": "Disabled",
                  "originalRequest": {
                    "method": "GET",
                    "header": [],
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/setting/checkEntraIDSetting",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "setting",
                        "checkEntraIDSetting"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json",
                      "description": ""
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"D\",\n    \"by\": \"web\"\n}"
                },
                {
                  "name": "Enabled",
                  "originalRequest": {
                    "method": "GET",
                    "header": [],
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/setting/checkEntraIDSetting",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "setting",
                        "checkEntraIDSetting"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json",
                      "description": ""
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"code\": \"0\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"E\",\n    \"by\": \"web\"\n}"
                }
              ]
            }
          ]
        },
        {
          "name": "Email Setting",
          "item": [
            {
              "name": "View Email Setting",
              "protocolProfileBehavior": {
                "disableBodyPruning": true
              },
              "request": {
                "method": "GET",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/setting_email",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "setting_email"
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Create Email Setting (Visual Face / QR)",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"title\": \"VisualFace\",\r\n    \"company_name\": \"Oddbit\",\r\n    \"company_logo\": \"\",\r\n    \"admin_contact\": \"Hello\",\r\n    \"use_setting\": \"1\"\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/setting_email?email_type=1",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "setting_email"
                  ],
                  "query": [
                    {
                      "key": "email_type",
                      "value": "1",
                      "description": "1:Visual face mobile enrollment contents, 2:QR credential contents"
                    }
                  ]
                },
                "description": "This API is used to set email template for Visual Face and BioStar X QR.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| title | String | Y | Enter the title of the email. |\n| company_name | String | N | Enter the company name. |\n| company_logo | Base64 | N | Supported image file formats are GIF, JPG, JPEG, JPE, JFIF, PNG.  <br>Supported image file size is up to 5MB. |\n| admin_contact | String | N | Enter the contact information of the person in charge. |\n| use_setting | Boolean | Y | To use the enrollment set it as Use. If you set it as Not Use, BioStar X will be unable to send the visual face mobile enrollment link or QR to users. |"
              },
              "response": []
            },
            {
              "name": "Update Email Setting (Visual Face / QR)",
              "request": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"title\": \"VisualFace\",\r\n    \"company_name\": \"Oddbit\",\r\n    \"company_logo\": \"\",\r\n    \"admin_contact\": \"Hello\",\r\n    \"use_setting\": \"1\"\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/setting_email?email_type=1",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "setting_email"
                  ],
                  "query": [
                    {
                      "key": "email_type",
                      "value": "1",
                      "description": "1:Visual face mobile enrollment contents, 2:QR credential contents"
                    }
                  ]
                },
                "description": "This API is used to update email template for Visual Face and BioStar X QR.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| title | String | Y | Enter the title of the email. |\n| company_name | String | N | Enter the company name. |\n| company_logo | Base64 | N | Supported image file formats are GIF, JPG, JPEG, JPE, JFIF, PNG.  <br>Supported image file size is up to 5MB. |\n| admin_contact | String | N | Enter the contact information of the person in charge. |\n| use_setting | Boolean | Y | To use the enrollment set it as Use. If you set it as Not Use, BioStar X will be unable to send the visual face mobile enrollment link or QR to users. |"
              },
              "response": []
            },
            {
              "name": "View SMTP Setting",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/setting/alarm_smtps",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "setting",
                    "alarm_smtps"
                  ]
                },
                "description": "This API is used to view the SMTP (Simple Mail Transfer Protocol) for sending emails."
              },
              "response": []
            },
            {
              "name": "Create SMTP Setting",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"AlarmSmtp\": {\r\n        \"name\": \"smtp.gmail.com\",\r\n        \"smtp_server_addr\": \"smtp.gmail.com\",\r\n        \"smtp_server_port\": \"465\",\r\n        \"smtp_username\": \"shin6518@gmail.com\",\r\n        \"smtp_password\": \"whhdsfysgrwffcxb\",\r\n        \"smtp_security\": \"2\",\r\n        \"smtp_sender\": \"shin6518@gmail.com\",\r\n        \"description\": \"gmail\"\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/setting/alarm_smtps",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "setting",
                    "alarm_smtps"
                  ]
                },
                "description": "This API is used to set the SMTP (Simple Mail Transfer Protocol) for sending emails.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter the SMTP server name. |\n| smtp_server_addr | String | Y | Enter the SMTP server address. SMTP server address is the same form as 'smtp. Email Service Provider.com', and you can check it on the settings screen of email to use as an SMTP. |\n| smtp_server_port | String | Y | Enter the port number of the SMTP server. you can check it on the settings screen of email to use as an SMTP. |\n| smtp_username | String | Y | Enter the account of the SMTP service. |\n| smtp_password | String | Y | Enter the password of the SMTP service. |\n| smtp_security | String | Y | Select security type. |\n| smtp_sender | String | Y | Enter the email address of the sender. |\n| description | String | N | Enter the description. |\n\n#### Note:\n\n- When using an SMTP server with an email account that has two-factor authentication (2FA) enabled, be aware of the following:  \n    Once 2FA is set up, the SMTP password is **not** the same as the email account password. Instead, it corresponds to an **app password** generated specifically for use with 2FA.  \n    If you change the email account password, all existing app passwords are automatically revoked. As a result, the previously configured SMTP password will no longer work.  \n    After changing the email account password, you must **generate a new app password** and **update the SMTP settings** with the new value."
              },
              "response": []
            },
            {
              "name": "Update SMTP Setting",
              "request": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"AlarmSmtp\": {\r\n        \"name\": \"smtp.gmail.com\",\r\n        \"smtp_server_addr\": \"smtp.gmail.com\",\r\n        \"smtp_server_port\": \"465\",\r\n        \"smtp_username\": \"shin6518@gmail.com\",\r\n        \"smtp_password\": \"whhdsfysgrwffcxb\",\r\n        \"smtp_security\": \"2\",\r\n        \"smtp_sender\": \"shin6518@gmail.com\",\r\n        \"description\": \"gmail\"\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/setting/alarm_smtps/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "setting",
                    "alarm_smtps",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": null,
                      "description": "ID of the SMTP setting which will be updated."
                    }
                  ]
                },
                "description": "This API is used to update the SMTP (Simple Mail Transfer Protocol) for sending emails.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter the SMTP server name. |\n| smtp_server_addr | String | Y | Enter the SMTP server address. SMTP server address is the same form as 'smtp. Email Service Provider.com', and you can check it on the settings screen of email to use as an SMTP. |\n| smtp_server_port | String | Y | Enter the port number of the SMTP server. you can check it on the settings screen of email to use as an SMTP. |\n| smtp_username | String | Y | Enter the account of the SMTP service. |\n| smtp_password | String | Y | Enter the password of the SMTP service. |\n| smtp_security | String | Y | Select security type. |\n| smtp_sender | String | Y | Enter the email address of the sender. |\n| description | String | N | Enter the description. |\n\n#### Note:\n\n- When using an SMTP server with an email account that has two-factor authentication (2FA) enabled, be aware of the following:  \n    Once 2FA is set up, the SMTP password is **not** the same as the email account password. Instead, it corresponds to an **app password** generated specifically for use with 2FA.  \n    If you change the email account password, all existing app passwords are automatically revoked. As a result, the previously configured SMTP password will no longer work.  \n    After changing the email account password, you must **generate a new app password** and **update the SMTP settings** with the new value."
              },
              "response": []
            },
            {
              "name": "Test SMTP Connection",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"target_email\": \"email address here\"\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/test_smtp_connection",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "test_smtp_connection"
                  ]
                },
                "description": "This API is used to test SMTP connection by sending an email to the specified address.\n\nDo note that the address input here need to be a complete email address."
              },
              "response": []
            }
          ]
        },
        {
          "name": "Preference",
          "item": [
            {
              "name": "View Preference",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/preferences/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "preferences",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "1",
                      "description": "ID of the user which preference will be viewed."
                    }
                  ]
                },
                "description": "This API is used to view preference information."
              },
              "response": []
            },
            {
              "name": "Add Preference",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"Preference\": {\r\n        \"language\": \"en\",\r\n        \"date_format\": \"yyyy/MM/dd\",\r\n        \"time_format\": \"HH:mm\",\r\n        \"time_long_term_format\": \"HH:mm:ss\",\r\n        \"time_zone\": \"25\",\r\n        \"dst1\": \"0\",\r\n        \"dst2\": \"0\",\r\n        \"depend_on_os\": true,\r\n        \"user_id\": {\r\n            \"user_id\": \"6\"\r\n        }\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/preferences",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "preferences"
                  ]
                },
                "description": "This API is used to add preference configuration.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| language | String | N | Preference language. Example: ko, en |\n| date_format | String | N | Format of the date |\n| time_format | String | N | Format of the time |\n| time_long_term_format | String | N | Format for long term time |\n| time_zone | String | N | UTC-12 0  <br>UTC-11 1  <br>UTC-10 2  <br>UTC-9.30 3-1  <br>UTC-9 3  <br>UTC-8 4  <br>UTC-7 5  <br>UTC-6 6  <br>UTC-5 7  <br>UTC-4.30 8-1  <br>UTC-4 8  <br>UTC-3.30 9  <br>UTC-3 10  <br>UTC-2 11  <br>UTC-1 12  <br>UTC 13  <br>UTC+1 14  <br>UTC+2 15  <br>UTC+3 16  <br>UTC+3.30 17  <br>UTC+4 18  <br>UTC+4.30 19  <br>UTC+5 20  <br>UTC+5.30 21  <br>UTC+5.45 22  <br>UTC+6 23  <br>UTC+6.30 23+1  <br>UTC+7 24  <br>UTC+8 25  <br>UTC+8.30 25+1  <br>UTC+8.45 25+2  <br>UTC+9 26  <br>UTC+9.30 27  <br>UTC+10 28  <br>UTC+10.30 28+1  <br>UTC+11 29  <br>UTC+12 30  <br>UTC+12.45 30+1  <br>UTC+13 31  <br>UTC+14 32 |\n| dst1 | String | N | ID of the first Daylight Saving Time applied. 0 for none. |\n| dst2 | String | N | ID of the second Daylight Saving Time applied. 0 for none. |\n| depend_on_os | Boolean | N |  |\n| user_id:user_id | String | Y | ID of the user |"
              },
              "response": []
            },
            {
              "name": "Update Preference",
              "request": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"Preference\": {\r\n        \"language\": \"en\",\r\n        \"date_format\": \"yyyy/MM/dd\",\r\n        \"time_format\": \"HH:mm\",\r\n        \"time_long_term_format\": \"HH:mm:ss\",\r\n        \"time_zone\": \"25\",\r\n        \"dst1\": \"0\",\r\n        \"dst2\": \"0\"\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/preferences/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "preferences",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "1"
                    }
                  ]
                },
                "description": "This API is used to update preference configuration.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| language | String | N | Preference language. Example: ko, en |\n| date_format | String | N | Format of the date |\n| time_format | String | N | Format of the time |\n| time_long_term_format | String | N | Format for long term time |\n| time_zone | String | N | UTC-12 0  <br>UTC-11 1  <br>UTC-10 2  <br>UTC-9.30 3-1  <br>UTC-9 3  <br>UTC-8 4  <br>UTC-7 5  <br>UTC-6 6  <br>UTC-5 7  <br>UTC-4.30 8-1  <br>UTC-4 8  <br>UTC-3.30 9  <br>UTC-3 10  <br>UTC-2 11  <br>UTC-1 12  <br>UTC 13  <br>UTC+1 14  <br>UTC+2 15  <br>UTC+3 16  <br>UTC+3.30 17  <br>UTC+4 18  <br>UTC+4.30 19  <br>UTC+5 20  <br>UTC+5.30 21  <br>UTC+5.45 22  <br>UTC+6 23  <br>UTC+6.30 23+1  <br>UTC+7 24  <br>UTC+8 25  <br>UTC+8.30 25+1  <br>UTC+8.45 25+2  <br>UTC+9 26  <br>UTC+9.30 27  <br>UTC+10 28  <br>UTC+10.30 28+1  <br>UTC+11 29  <br>UTC+12 30  <br>UTC+12.45 30+1  <br>UTC+13 31  <br>UTC+14 32 |\n| dst1 | String | N | ID of the first Daylight Saving Time applied. 0 for none. |\n| dst2 | String | N | ID of the second Daylight Saving Time applied. 0 for none. |"
              },
              "response": []
            }
          ]
        },
        {
          "name": "View BioStar Settings",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/setting/biostar",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "biostar"
              ]
            },
            "description": "This API is used to view BioStar X settings."
          },
          "response": []
        },
        {
          "name": "Create Custom Field(s)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"CustomFieldCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"order\": 5,\r\n                \"name\": \"text input box\",\r\n                \"type\": 0,\r\n                \"enable\": true\r\n            },\r\n            {\r\n                \"order\": 2,\r\n                \"name\": \"number input\",\r\n                \"type\": \"1\",\r\n                \"enable\": true\r\n            },\r\n            {\r\n                \"order\": 3,\r\n                \"name\": \"combo box\",\r\n                \"type\": \"2\",\r\n                \"data\": \"abc; def\",\r\n                \"enable\": true\r\n            },\r\n            {\r\n                \"order\": 4,\r\n                \"name\": \"file upload\",\r\n                \"type\": \"3\"\r\n            }            \r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/setting/custom_fields",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "custom_fields"
              ]
            },
            "description": "This API is used to create user custom field(s) on BioStar X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| order | Number | Y | Unique |\n| name | String | Y | Unique |\n| type | Number | Y | 0: Text Input, 1: Number Input, 2: Combo Box, 3: File Upload. |\n| enable | Boolean | Y | Toggle true to enable custom field. |\n| data | String | N | Combo Box options, use (;) as separator of each value. |\n\n#### Response Example:\n\n``` json\n{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "Update Custom Field(s)",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"CustomFieldCollection\": {\r\n        \"rows\": [\r\n            {\r\n                \"id\": \"1\",\r\n                \"order\": 1,\r\n                \"name\": \"text input box\",\r\n                \"type\": 0\r\n            },\r\n            {\r\n                \"id\": \"2\",\r\n                \"order\": 2,\r\n                \"name\": \"number input\",\r\n                \"type\": \"1\"\r\n            },\r\n            {\r\n                \"id\": \"3\",\r\n                \"order\": 3,\r\n                \"name\": \"combo box\",\r\n                \"type\": \"2\",\r\n                \"data\": \"abc; def\"\r\n            },\r\n            {\r\n                \"id\": \"4\",\r\n                \"order\": 4,\r\n                \"name\": \"file upload\",\r\n                \"type\": \"3\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/setting/custom_fields",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "custom_fields"
              ]
            },
            "description": "This example shows how to update custom field.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| id | Number | Y | ID of the custom field. |\n| order | Number | Y | Order sequence of the custom field. |\n| name | String | Y | Name of the custom field. |\n| type | Number | Y | 0: Text Input, 1: Number Input, 2: Combo Box, 3: File Upload. |\n| data | String | N | Combo Box options, use (;) as separator of each value. |\n\n#### Note:\n\n- The main difference between Create and Updating custom field(s) is on Update, ID needs to be specified.\n    \n- To get the custom field's ID, use `GET /api/setting/custom_fields`\n    \n- When updating a custom field when there are more than 1 custom fields, the custom fields which are not updated need to be specified since the API is using `PUT` method."
          },
          "response": []
        },
        {
          "name": "Delete Custom Field(s)",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/setting/custom_fields?id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "custom_fields"
              ],
              "query": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the Custom Field(s) which will be deleted. Use space ( ) as separator for multiple IDs.",
                  "type": "text"
                }
              ]
            },
            "description": "This API is used to delete user custom fields which recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "List Available Custom Field(s)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/setting/custom_fields",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "custom_fields"
              ]
            },
            "description": "This API is used to view all available user custom fields.\n\n#### Response Properties:\n\n| **Parameter** | **Type** | **Description** |\n| --- | --- | --- |\n| total | Number | Total of Custom Fields |\n| rows | Array | List of Custom Fields definition |\n| rows.id | Number | ID of the Custom Field |\n| rows.name | String | Name of the Custom Field |\n| rows.type | Number | Type of the Custom Field.  <br>0 = Text Input  <br>1 = Number Input  <br>2 = Combo Box  <br>3 = File Upload |\n| rows.order | Number | Display order of the Custom Field |\n| rows.data | String | Only for Combo Box Type. Data for combo box options, delimited by semicolon. |"
          },
          "response": [
            {
              "name": "List Available Custom Field(s)",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/setting/custom_fields",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "setting",
                    "custom_fields"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json",
                  "description": ""
                },
                {
                  "key": "Content-Length",
                  "value": "478"
                },
                {
                  "key": "Date",
                  "value": "Mon, 17 Feb 2025 06:58:03 GMT"
                },
                {
                  "key": "Keep-Alive",
                  "value": "timeout=5"
                },
                {
                  "key": "Connection",
                  "value": "keep-alive"
                }
              ],
              "cookie": [],
              "body": "{\n    \"CustomFieldCollection\": {\n        \"total\": \"5\",\n        \"rows\": [\n            {\n                \"id\": \"1\",\n                \"name\": \"combo box 1\",\n                \"type\": \"2\",\n                \"order\": \"1\",\n                \"data\": \"1; 2; 3\"\n            },\n            {\n                \"id\": \"3\",\n                \"name\": \"number input\",\n                \"type\": \"1\",\n                \"order\": \"2\"\n            },\n            {\n                \"id\": \"4\",\n                \"name\": \"combo box 2\",\n                \"type\": \"2\",\n                \"order\": \"3\",\n                \"data\": \"Option 1; Option 2\"\n            },\n            {\n                \"id\": \"5\",\n                \"name\": \"file upload\",\n                \"type\": \"3\",\n                \"order\": \"4\"\n            },\n            {\n                \"id\": \"2\",\n                \"name\": \"text input box\",\n                \"type\": \"0\",\n                \"order\": \"5\"\n            }\n        ]\n    },\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            }
          ]
        },
        {
          "name": "View Output Signal",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/setting/output_signals",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "output_signals"
              ]
            },
            "description": "This API is used to view output signals which used on certain actions for setting the relay of the device to trigger in certain signals. The trigger & action from the device configuration is one of them."
          },
          "response": []
        },
        {
          "name": "Create Output Signal",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"OutputSignal\": {\r\n        \"name\": \"TestElevatorSignal2\",\r\n        \"delay\": 0,\r\n        \"count\": 0,\r\n        \"on_duration\": 0,\r\n        \"off_duration\": 0\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/setting/output_signals",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "output_signals"
              ]
            },
            "description": "This API is used to create output signal.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the output signal |\n| delay | Number | N | Set the signal delay |\n| count | Number | N | Set the signal count |\n| on_duration | Number | N | Set the signal ON duration |\n| off_duration | Number | N | Set the signal OFF duration |"
          },
          "response": []
        },
        {
          "name": "Update Output Signal",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/setting/output_signals/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "output_signals",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the output signal which will be updated."
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Delete Output Signal",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/setting/output_signals/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "output_signals",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the output signal which will be deleted."
                }
              ]
            }
          },
          "response": []
        },
        {
          "name": "Update Server Matching",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"BioStar\": {\r\n        \"server_matching\": {\r\n            \"use-server-matching\": \"false\",\r\n            \"security-level\": 6,\r\n            \"face-security-level\": 1,\r\n            \"fast-mode\": \"true\",\r\n            \"matching-concurrency-count\": \"2\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/setting/biostar/server_matching",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "biostar",
                "server_matching"
              ]
            },
            "description": "If server matching enabled, the user’s fingerprint will be matched from BioStar X, not the device. The Server Matching can be used when the corresponding license is activated.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| use-server-matching | Boolean | Y | Activates/Deactivates server matching. |\n| security-level | Number | N | Configure the server matching’s security level for fingerprints. The higher the security level is set, the more the false rejection rate (FRR) can occur. |\n| face-security-level | Number | N | Configure the server matching’s security level for faces. The higher the security level is set, the more the false rejection rate (FRR) can occur. |\n| fast-mode | Boolean | N | Configure the fingerprint matching speed. |\n| matching-concurrency-count | Number | N | Configure how many matchings can be done simultaneously.  <br>Max. Simultaneous Server Matching Count depends on the PC's CPU performance. |"
          },
          "response": []
        },
        {
          "name": "Update BioStar X Settings",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"BioStar\": {\r\n        \"session_timeout\": \"216000\",\r\n        \"server_port\": \"51212\",\r\n        \"server_matching\": {\r\n            \"matching-concurrency-count\": \"2\",\r\n            \"use-server-matching\": \"false\",\r\n            \"security-level\": \"6\",\r\n            \"fast-mode\": \"true\",\r\n            \"face-security-level\": \"1\"\r\n        },\r\n        \"user_sync_method\": \"1\",\r\n        \"user_by_device_sync_method\": \"0\",\r\n        \"log_sync_method\": \"0\",\r\n        \"check_duplicate_id_at_devices\": \"0\",\r\n        \"automatic_server_upgrade\": \"0\",\r\n        \"upgrade_when\": \"0\",\r\n        \"fingerprint_format\": \"0\",\r\n        \"licese_server_addr\": \"http://license.biostar2.com\",\r\n        \"backup\": {\r\n            \"use\": \"false\",\r\n            \"cycle\": \"2\",\r\n            \"day\": \"28\",\r\n            \"weekday\": \"2\",\r\n            \"time\": \"10800\",\r\n            \"path\": \".\\\\bk\",\r\n            \"overwritable\": \"false\"\r\n        },\r\n        \"support_mobile_credential\": \"true\",\r\n        \"language\": \"en\",\r\n        \"server_addr\": \"\",\r\n        \"delete_credential_after_aoc\": \"false\",\r\n        \"secure_communication\": {\r\n            \"mode\": \"0\",\r\n            \"use_external_cert\": \"false\",\r\n            \"enable_data_encryption\": \"false\",\r\n            \"enable_db_data_encryption\": \"false\",\r\n            \"ischanged_data_encryption\": \"false\",\r\n            \"ischanged_db_data_encryption\": \"false\",\r\n            \"enable_db_encryption\": \"false\",\r\n            \"is_random_encryption_key\": \"true\",\r\n            \"is_random_hash_key\": \"true\",\r\n            \"has_encryption_key\": \"false\",\r\n            \"has_hash_key\": \"true\"\r\n        },\r\n        \"system_security\": {\r\n            \"password_strength\": \"2\",\r\n            \"use_password_update_cycle\": \"false\",\r\n            \"password_update_cycle\": \"60\",\r\n            \"use_allow_login_failed\": \"false\",\r\n            \"allow_login_failed_count\": \"5\",\r\n            \"allow_login_failed_minutes\": \"10\",\r\n            \"use_allow_password_change\": \"false\",\r\n            \"allow_password_change_count\": \"1\",\r\n            \"use_allow_simultaneous_connection\": \"true\"\r\n        },\r\n        \"web_request_timeout\": \"60\",\r\n        \"imglog_dir\": \".\\\\imagelog\\\\\",\r\n        \"websocket_cors\": \"*\",\r\n        \"enable_websocket_connection_bsSessionId\": \"false\",\r\n        \"enckey_dir\": \"C:\\\\Program Files\\\\BioStar 2(x64)\\\\util\",\r\n        \"device_event_log_skip_enroll_success_user\": \"false\",\r\n        \"http\": {\r\n            \"port\": \"80\",\r\n            \"root_path\": \"html\"\r\n        },\r\n        \"https\": {\r\n            \"use_ssl\": \"1\",\r\n            \"port\": \"443\",\r\n            \"ssl_addr\": \"192.168.1.5\",\r\n            \"server.ssl.key-store-password.use_enc\": \"1\"\r\n        },\r\n        \"cloud\": {\r\n            \"use_cloud\": \"0\",\r\n            \"server_address\": \"api.biostar2.com\",\r\n            \"http_port\": \"52000\",\r\n            \"version\": \"v2\",\r\n            \"sub_domain\": \"oddbit\",\r\n            \"email\": \"team-suprema@oddbit.id\",\r\n            \"account_id\": \"611dcbe1f3e8e50a179b105c\",\r\n            \"email_use_enc\": \"1\"\r\n        },\r\n        \"tna\": {\r\n            \"use_tna\": \"true\",\r\n            \"http_port\": \"3000\",\r\n            \"https_port\": \"3002\",\r\n            \"ngrok_port\": \"51000\"\r\n        },\r\n        \"video\": {\r\n            \"use_video\": \"true\",\r\n            \"http_port\": \"3010\",\r\n            \"https_port\": \"3012\",\r\n            \"ngrok_port\": \"52002\"\r\n        },\r\n        \"licenses\": [\r\n            {\r\n                \"product_type\": \"1\",\r\n                \"name\": \"biostar_def\",\r\n                \"available\": {\r\n                    \"ZONE\": \"false\",\r\n                    \"ELEVATOR\": \"false\",\r\n                    \"SERVER_MATCHING\": \"false\",\r\n                    \"CLOUD\": \"false\",\r\n                    \"MOBILE_CARD\": \"false\",\r\n                    \"GRAPHICMAP\": \"false\"\r\n                },\r\n                \"activated\": \"true\"\r\n            },\r\n            {\r\n                \"product_type\": \"2\",\r\n                \"name\": \"biostar_std\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"3\",\r\n                \"name\": \"biostar_tna\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"4\",\r\n                \"name\": \"biostar2_basic\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"5\",\r\n                \"name\": \"biostar2_std\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"6\",\r\n                \"name\": \"biostar2_adv\",\r\n                \"available\": {\r\n                    \"ZONE\": \"true\",\r\n                    \"ELEVATOR\": \"true\",\r\n                    \"SERVER_MATCHING\": \"true\",\r\n                    \"CLOUD\": \"true\",\r\n                    \"MOBILE_CARD\": \"true\",\r\n                    \"GRAPHICMAP\": \"true\"\r\n                },\r\n                \"activated\": \"true\",\r\n                \"customer\": \"Oddbit\",\r\n                \"expires_on\": \"permanent\"\r\n            },\r\n            {\r\n                \"product_type\": \"7\",\r\n                \"name\": \"biostar2_pro\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"8\",\r\n                \"name\": \"biostar2_ent\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"9\",\r\n                \"name\": \"biostar2_video\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"10\",\r\n                \"name\": \"biostar2_visitor\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"11\",\r\n                \"name\": \"biostar2_tna_std\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"12\",\r\n                \"name\": \"biostar2_tna_adv\",\r\n                \"activated\": \"false\"\r\n            },\r\n            {\r\n                \"product_type\": \"13\",\r\n                \"name\": \"biostar2_tna_pro\",\r\n                \"activated\": \"false\"\r\n            }\r\n        ],\r\n        \"mobile\": {\r\n            \"use_mobile_credential\": \"1\",\r\n            \"email\": \"agni@supremainc.com\",\r\n            \"password\": \"****************\",\r\n            \"mc_server_addr\": \"https://api.mc.suprema.io\",\r\n            \"mc_port\": \"443\",\r\n            \"siteid\": \"6482\",\r\n            \"site_type\": \"REGULAR\"\r\n        },\r\n        \"log_level\": {\r\n            \"enable\": \"true\",\r\n            \"log_retain_days\": \"60\",\r\n            \"level\": \"none\",\r\n            \"filter\": {\r\n                \"SYS\": \"info\",\r\n                \"DBG\": \"none\",\r\n                \"NET\": \"info\",\r\n                \"WEB\": \"info\",\r\n                \"SQL\": \"none\",\r\n                \"WSS\": \"none\"\r\n            }\r\n        },\r\n        \"server_ip_list\": [\r\n            {\r\n                \"ip\": \"192.168.1.5\",\r\n                \"version\": \"v4\"\r\n            }\r\n        ],\r\n        \"use_alphanumeric\": \"false\",\r\n        \"is_set_new_administrator_password\": \"false\",\r\n        \"ischanged_db_data_encryption\": \"false\",\r\n        \"ischanged_data_encryption\": \"false\",\r\n        \"eventlog\": {\r\n            \"event_log_retain_days\": \"60\",\r\n            \"active\": \"false\"\r\n        },\r\n        \"log\": {\r\n            \"log_retain_days\": \"60\",\r\n            \"cron\": \"0 0 0 * * *\",\r\n            \"path\": \"logs\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/setting/biostar",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "biostar"
              ]
            },
            "description": "This API is used to update various BioStar X settings.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| session_timeout | String | N | Set a session timeout period. If there is no activity on BioStar X for the set time after logging in, the session is logged out automatically. This value represents second. |\n| server_port | String | N | Port number that BioStar X uses. |\n| server_matching  <br>\\>use-server-matching | Boolean | N | Activates/Deactivates server matching. Toggle true to activate. |\n| \\>matching-concurrency-count | Number | N | Configure how many matchings can be done simultaneously. |\n| \\>security-level | Number | N | Configure the server matching’s security level for fingerprints. The higher the security level is set, the more the false rejection rate (FRR) can occur. |\n| \\>fast-mode | Boolean | N | Configure the fingerprint matching speed. |\n| \\>face-security-level | Number | N | Configure the server matching’s security level for faces. The higher the security level is set, the more the false rejection rate (FRR) can occur. |\n| user_sync_method | Number | N | Automatic user synchronization setting. Need to be combined with `user_by_device_sync_method` to use.  <br>Not Used : user_sync_method : \"0\" & user_by_device_sync_method:\"0\"  <br>All Devices : user_sync_method : \"1\" & user_by_device_sync_method:\"0\"  <br>All Devices (Including user update from device) : user_sync_method : \"1\" & user_by_device_sync_method:\"1\"  <br>Specific Devices (Only devices belonging to the access group) : user_sync_method : \"3\" & user_by_device_sync_method:\"0\" |\n| user_by_device_sync_method | Number | N | See user_sync_method |\n| log_sync_method | Number | N | Toggle value to 1 to set the Log Upload to manual, and 0 for automatic. |"
          },
          "response": []
        },
        {
          "name": "Check BioStar X Version",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/js/info.json",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "js",
                "info.json"
              ]
            },
            "description": "This API is used to check BioStar X's version."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Mobile Access",
      "item": [
        {
          "name": "Delete Mobile Access Card in Airfob Portal: Card ID",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"MobileCollection\": {\r\n        \"mobile\": {\r\n            \"card_id\": [\r\n                \"23\",\r\n                \"24\",\r\n                \"25\"\r\n            ],\r\n            \"user_id\": []\r\n        }\r\n    }\r\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/mobile/delete",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "mobile",
                "delete"
              ]
            },
            "description": "This API is used to delete Mobile Access Card in Airfob Portal.\n\nThere are three variations in using this API:\n\n1. Using Card ID\n    \n2. Using User ID\n    \n3. Using ALL parameter on User ID\n    \n\n#### BODY Parameters:\n\n| Parameter | Type | **Required** | **Description** |\n| --- | --- | --- | --- |\n| card_id | Array | Y | Mobile Access Card's card ID |\n| user_id | Array | Y | ID of the user which Mobile Access Card will be removed. |\n\nTo delete multiple `card_id` or `user_id`, separate each value with comma (,). Ex: \\[\"1\", \"2\", \"3\"\\]\n\n#### Response:\n\n- 200 OK\n    \n\n``` json\n{\n    \"failedUsers\": [],\n    \"failedCards\": [],\n    \"mobileUsers\": [],\n    \"status\": 0,\n    \"errorMessage\": \"\",\n    \"Response\": {\n        \"code\": \"0\"\n    }\n}\n\n```\n\n- failedUsers : User information that fails after requesting to delete airfob\n    \n- failedCards : Card information that fails after requesting to delete airfob"
          },
          "response": []
        },
        {
          "name": "Delete Mobile Access Card in Airfob Portal: User ID",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"MobileCollection\": {\r\n        \"mobile\": {\r\n            \"card_id\": [],\r\n            \"user_id\": [\r\n                \"3\",\r\n                \"4\"\r\n            ]\r\n        }\r\n    }\r\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/mobile/delete",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "mobile",
                "delete"
              ]
            },
            "description": "This API is used to delete Mobile Access Card in Airfob Portal.\n\nThere are three variations in using this API:\n\n1. Using Card ID\n    \n2. Using User ID\n    \n3. Using ALL parameter on User ID\n    \n\n#### BODY Parameters:\n\n| Parameter | Type | **Required** | **Description** |\n| --- | --- | --- | --- |\n| card_id | Array | Y | Mobile Access Card's card ID |\n| user_id | Array | Y | ID of the user which Mobile Access Card will be removed. |\n\nTo delete multiple `card_id` or `user_id`, separate each value with comma (,). Ex: \\[\"1\", \"2\", \"3\"\\]\n\n#### Response:\n\n- 200 OK\n    \n\n``` json\n{\n    \"failedUsers\": [],\n    \"failedCards\": [],\n    \"mobileUsers\": [\n        \"3\",\n        \"4\"\n    ],\n    \"status\": 0,\n    \"errorMessage\": \"\",\n    \"Response\": {\n        \"code\": \"0\"\n    }\n}\n\n```\n\n- failedUsers : User information that fails after requesting to delete airfob\n    \n- failedCards : Card information that fails after requesting to delete airfob"
          },
          "response": []
        },
        {
          "name": "Delete Mobile Access Card in Airfob Portal: ALL on User ID",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"MobileCollection\": {\r\n        \"mobile\": {\r\n            \"user_id\": \"ALL\",\r\n            \"card_id\": [],\r\n            \"param\": {\r\n                \"UserIDs\": \"ALL\",\r\n                \"query\": {\r\n                    \"group_id\": 1\r\n                }\r\n            }\r\n        }\r\n    }\r\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/mobile/delete",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "mobile",
                "delete"
              ]
            },
            "description": "This API is used to delete Mobile Access Card in Airfob Portal.\n\nThere are three variations in using this API:\n\n1. Using Card ID\n    \n2. Using User ID\n    \n3. Using ALL parameter on User ID\n    \n\n#### BODY Parameters:\n\n| Parameter | Type | **Required** | **Description** |\n| --- | --- | --- | --- |\n| card_id | Array | Y | Mobile Access Card's card ID |\n| user_id | String | Y | The use of ALL parameter will remove Airfob's Mobile Access Card from all user which have Mobile Access Card on their credential list. |\n| param:UserIDs | String | Y | Will only be required if using ALL parameter on mobile:user_id. Default value: ALL |\n| param:query:group_id | Number | Y | Will only be required if using ALL parameter on mobile:user_id. Default value: 1 |\n\n- To delete multiple `card_id` or `user_id`, separate each value with comma (,). Ex: \\[\"1\", \"2\", \"3\"\\]\n    \n- This API only remove Mobile Access Card information from Airfob Portal. To remove Mobile Access credential from the user, use `PUT /api/users/:id`\n    \n\n#### Response:\n\n- 200 OK\n    \n\n``` json\n{\n    \"failedUsers\": [],\n    \"failedCards\": [],\n    \"mobileUsers\": [\n        \"3\",\n        \"4\"\n    ],\n    \"status\": 0,\n    \"errorMessage\": \"\",\n    \"Response\": {\n        \"code\": \"0\"\n    }\n}\n\n```\n\n- failedUsers : User information that fails after requesting to delete airfob\n    \n- failedCards : Card information that fails after requesting to delete airfob"
          },
          "response": []
        },
        {
          "name": "Create Mobile Access Card in Airfob Portal",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"MobileCollection\": {\r\n        \"mobile\": {\r\n            \"user_id\": [\r\n                \"3\"\r\n            ],\r\n            \"name\": [\r\n                \"test2\"\r\n            ],\r\n            \"title\": [\r\n                null\r\n            ],\r\n            \"department\": [\r\n                null\r\n            ],\r\n            \"phone\": [\r\n                null\r\n            ],\r\n            \"email\": [\r\n                \"test2@suprema.com\"\r\n            ],\r\n            \"portraitData\": [\r\n                null\r\n            ],\r\n            \"card_id\": [\r\n                \"2\"\r\n            ],\r\n            \"startDate\": [\r\n                1703563320000\t\r\n            ],\r\n            \"endDate\": [\r\n                1703649720000\r\n            ],\r\n            \"startTime\": [\r\n                978274800000\r\n            ],\r\n            \"endTime\": [\r\n                1924959540000\r\n            ],\r\n            \"issueCount\": [\r\n                1\r\n            ],\r\n            \"duressMask\": [\r\n                null\r\n            ],\r\n            \"useAlphanumericID\": [\r\n                0\r\n            ],\r\n            \"cardAuthModeEx\": [\r\n                null\r\n            ],\r\n            \"pin\": [\r\n                null\r\n            ],\r\n            \"accessGroupId\": [\r\n                null\r\n            ],\r\n            \"mobileCardType\": [\r\n                \"4\"\r\n            ]\r\n        }\r\n    }\r\n}"
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/mobile",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "mobile"
              ]
            },
            "description": "This API is used to create Mobile Access Card in Airfob Portal.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_id | String | Y | User ID |\n| name | String | N | User Name |\n| title | String | N | User's Title |\n| department | String | N | Department Name |\n| phone | String | N | Phone Number |\n| email | String | Y | Email |\n| portraitData | String | N | Photo encoding data. Base64. |\n| card_id | String | Y | Card ID |\n| startDate | Timestamp | Y - Dynamic Site | Start Date for Dynamic Site |\n| endDate | Timestamp | Y - Dynamic Site | End Date for Dynamic Site |\n| startTime | Timestamp | Y | User period start date |\n| endTime | Timestamp | Y | User period end date |\n| issueCount | Number | Y - ToM | ToM card issue round |\n| duressMask | String | N | Duress value |\n| useAlphanumericID | Number | N | 0: Numeric  <br>1: Alphanumeric |\n| cardAuthModeEx | String | N | See below |\n| pin |  | N | PIN number |\n| accessGroupId |  | N | Access Group ID |\n| mobileCardType |  | Y | 4: CSN Mobile  <br>14: ToM_AoC  <br>15: ToM_SCC |\n\n- When creating mobile access cards, Airfob portal sites are divided into regular and dynamic\n    \n- The startDate and endDate fields are used when the sites are dynamic sites\n    \n\n##### **ToM**\n\n- ToM uses Extend mode for personal authentication mode when creating a card\n    \n- If another device supports ToM in the future, a value mapped to cardAuthMode (standard) and cardAuthModeEx (extend) should be added for compatibility with devices that do not support Extend\n    \n- In API, if you put in the cardAuthModeEx value, the server internally maps the cardAuthMode value\n    \n\n##### **Card AuthMode Mapping Table:**\n\n| **cardAuthModeEx** | **cardAuthMode** |\n| --- | --- |\n| 21 - Card | 2 - Card only |\n| 22 - Card + Face | 3 - Card + Fingerprint |\n| 23 - Card + Fingerprint | 3 - Card + Fingerprint |\n| 24 - Card + PIN | 4 - Card + PIN |\n| 25 - Card + Face or Fingerprint | 5 - Card + Fingerprint or PIN |\n| 26 - Card + Face or PIN | 5 - Card + Fingerprint or PIN |\n| 27 - Card + Fingerprint or PIN | 5 - Card + Fingerprint or PIN |\n| 28 - Card + Face or Fingerprint or PIN | 5 - Card + Fingerprint or PIN |\n| 29 - Card + Face + Fingerprint | 6 - Card + Fingerprint + PIN |\n| 30 - Card + Face + PIN | 6 - Card + Fingerprint + PIN |\n| 31 - Card + Fingerprint + Face | 6 - Card + Fingerprint + PIN |\n| 32 - Card + Fingerprint + PIN | 6 - Card + Fingerprint + PIN |\n| 33 - Card + Face or Fingerprint + PIN | 6 - Card + Fingerprint + PIN |\n| 34 - Card + Face + Fingerprint or PIN | 6 - Card + Fingerprint + PIN |\n| 35 - Card + Fingerprint + Face or PIN | 6 - Card + Fingerprint + PIN |\n\n#### **Response:**\n\n- 200 OK\n    \n\n``` json\n{\n  \"MobileCollection\": {\n    \"listMobile\": [\n      {\n        \"apisnddt\": \"2023-12-26T04:03:17.382Z\",\n        \"userid\": \"2\",\n        \"crdid\": \"2\",\n        \"portalrslt\": \"\"\n      }\n    ],\n    \"recordMobile\": [\n      {\n        \"number\": \"2\",\n        \"status\": \"INACTIVE\",\n        \"cardType\": \"REGULAR\",\n        \"startDate\": \"0\",\n        \"endDate\": \"253402300799000\",\n        \"startTime\": \"978274800000\",\n        \"endTime\": \"1924959540000\",\n        \"name\": \"test2\",\n        \"department\": \"\",\n        \"title\": \"\",\n        \"issueCount\": \"1\",\n        \"cardAuthMode\": \"2\",\n        \"cardAuthModeEx\": \"21\",\n        \"mobileCardType\": \"4\"\n      }\n    ]\n  },\n  \"Response\": {\n    \"code\": \"0\"\n  }\n}\n\n```\n\n##### **Response Description:**\n\n| **Parameter** | **Description** |\n| --- | --- |\n| apisnddt | API send time |\n| userid | User ID |\n| crdid | Card ID |\n| portalrslt | Not used |\n| number | Card ID |\n| status | Sie status |\n| cardType | Site type (Regular or Dynamic) |\n| startDate | Start Date for Dynamic Site |\n| endDate | End Date for Dynamic Site |\n| startTime | User period start date |\n| endTime | User period end date |\n| name | User name |\n| department | Department name |\n| title | User's title |\n| issueCount | ToM card issue round |\n| cardAuthMode | Card standard AuthMode value (See ToM description above) |\n| cardAuthModeEx | Card extended AuthMode value (See ToM description above) |\n| mobileCardType | 4: CSN Mobile  <br>14: ToM_AoC  <br>15: ToM_SCC |"
          },
          "response": []
        },
        {
          "name": "View Deleted CSN Mobile",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v2/cards/mobile/search?limit=50&offset=0&search_type=DELETED_CSN_MOBILE",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "cards",
                "mobile",
                "search"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Limit the number of responses by n records. Remove this parameter to view all."
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Offset the response shown by n records."
                },
                {
                  "key": "search_type",
                  "value": "DELETED_CSN_MOBILE",
                  "description": "Filter the response by card type (DELETED_CSN_MOBILE)."
                }
              ]
            },
            "description": "This API is used to fetch CSN Mobile information deleted from the list.\n\n#### Response Example:\n\n``` json\n{\n  \"CardCollection\" : {\n    \"rows\" : [ {\n      \"id\" : \"11\",\n      \"card_id\" : \"1234\",\n      \"user_id\" : \"12\",\n      \"user_name\" : \"test3\",\n      \"display_card_id\" : \"1234\",\n      \"card_type\" : {\n        \"id\" : 4,\n        \"name\" : \"CSN Mobile\",\n        \"type\" : 4\n      }\n    }, {\n      \"id\" : \"12\",\n      \"card_id\" : \"5678\",\n      \"user_id\" : \"13\",\n      \"user_name\" : \"test4\",\n      \"display_card_id\" : \"5678\",\n      \"card_type\" : {\n        \"id\" : 4,\n        \"name\" : \"CSN Mobile\",\n        \"type\" : 4\n      }\n    }, {\n      \"id\" : \"15\",\n      \"card_id\" : \"2222\",\n      \"user_id\" : \"16\",\n      \"user_name\" : \"test7\",\n      \"display_card_id\" : \"2222\",\n      \"card_type\" : {\n        \"id\" : 4,\n        \"name\" : \"CSN Mobile\",\n        \"type\" : 4\n      }\n    } ],\n    \"total\" : \"3\"\n  },\n  \"Response\" : {\n    \"code\" : \"0\"\n  }\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "Delete CSN Mobile",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v2/cards/mobile/enable?id=18,19,20",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "cards",
                "mobile",
                "enable"
              ],
              "query": [
                {
                  "key": "id",
                  "value": "18,19,20",
                  "description": "Card UID value, separate using comma (,). Use asterisk (*) to select all."
                }
              ]
            },
            "description": "This API is used to delete CSN Mobile information.\n\n#### Response Example:\n\n``` json\n{\n    \"code\": \"0\"\n}\n\n```"
          },
          "response": []
        },
        {
          "name": "Count Deleted CSN Mobile",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"cardUids\": \"11,12,13,16,17\"\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/v2/cards/mobile/count",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v2",
                "cards",
                "mobile",
                "count"
              ]
            },
            "description": "This API is used to count deleted CSN Mobile information.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| cardUids | String | Y | List Mobile Card UID(s) which will be counted. |\n\n#### Response Example:\n\n``` json\n{\n  \"CardCollection\" : {\n    \"count\" : 2\n  },\n  \"Response\" : {\n    \"code\" : \"0\"\n  }\n}\n\n```"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Events",
      "item": [
        {
          "name": "Virtual Device & Event Import",
          "item": [
            {
              "name": "Create a New Virtual Device",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"VirtualDevice\": {\r\n        \"id\": \"100001\",\r\n        \"name\": \"Virtual Device 100001\",\r\n        \"description\": \"Virtual device for mobile punch import\",\r\n        \"device_group_id\": {\r\n            \"id\": 1\r\n        }\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/virtual_devices",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "virtual_devices"
                  ]
                },
                "description": "Registers a **virtual device** within BioStar X.\n\nEach virtual device:\n\n- Must have a unique `id` (range: 100001–999999).\n    \n- Cannot duplicate existing device IDs or names.\n    \n- Appears in device lists when `?virtual=true` is included in search queries.\n    \n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| VirtualDevice | Object | Y | Root object containing virtual device details. |\n| VirtualDevice.id | Number | Y | Unique identifier for the virtual device. Must be within 100001–999999 and not duplicate any existing device ID. |\n| VirtualDevice.name | String | Y | Display name of the virtual device. Must be unique (no duplicate with existing devices). |\n| VirtualDevice.description | String | N | Optional text description for internal reference. |\n| VirtualDevice.device_group_id | Object | Y | Defines which device group this virtual device belongs to. |\n| VirtualDevice.device_group_id.id | Number | Y | The ID of an existing device group. |\n\n#### Notes:\n\n- Virtual devices are **non-functional** placeholders (cannot control doors or perform access).\n    \n- Once created, the **device ID cannot be modified**.\n    \n- Virtual devices can be listed using `GET /api/v2/devices/search?virtual=true`."
              },
              "response": [
                {
                  "name": "Success",
                  "originalRequest": {
                    "method": "POST",
                    "header": [],
                    "body": {
                      "mode": "raw",
                      "raw": "{\r\n    \"VirtualDevice\": {\r\n        \"id\": \"100001\",\r\n        \"name\": \"Virtual Device 100001\",\r\n        \"description\": \"Virtual device for mobile punch import\",\r\n        \"device_group_id\": {\r\n            \"id\": 1\r\n        }\r\n    }\r\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/virtual_devices",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "virtual_devices"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": null,
                  "header": [
                    {
                      "key": "transfer-encoding",
                      "value": "chunked"
                    },
                    {
                      "key": "X-Content-Type-Options",
                      "value": "nosniff"
                    },
                    {
                      "key": "X-XSS-Protection",
                      "value": "1"
                    },
                    {
                      "key": "Cache-Control",
                      "value": "no-cache, no-store, max-age=0, must-revalidate"
                    },
                    {
                      "key": "Pragma",
                      "value": "no-cache"
                    },
                    {
                      "key": "Expires",
                      "value": "0"
                    },
                    {
                      "key": "Strict-Transport-Security",
                      "value": "max-age=31536000 ; includeSubDomains"
                    },
                    {
                      "key": "X-Frame-Options",
                      "value": "SAMEORIGIN"
                    },
                    {
                      "key": "Content-Security-Policy",
                      "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:*  https://*.openstreetmap.org;"
                    },
                    {
                      "key": "Content-Type",
                      "value": "application/json;charset=UTF-8"
                    },
                    {
                      "key": "Date",
                      "value": "Thu, 30 Oct 2025 06:45:55 GMT"
                    },
                    {
                      "key": "Referrer-Policy",
                      "value": "no-referrer"
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"VirtualDevices\": [\n        {\n            \"id\": 100001,\n            \"name\": \"Virtual Device 100001\",\n            \"description\": \"Virtual device for mobile punch import\",\n            \"device_group_id\": {\n                \"id\": 1\n            }\n        }\n    ],\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\",\n        \"by\": \"web\"\n    }\n}"
                },
                {
                  "name": "License Required",
                  "originalRequest": {
                    "method": "POST",
                    "header": [],
                    "body": {
                      "mode": "raw",
                      "raw": "{\r\n    \"VirtualDevice\": {\r\n        \"id\": \"100001\",\r\n        \"name\": \"Virtual Device 100001\",\r\n        \"description\": \"Virtual device for mobile punch import\",\r\n        \"device_group_id\": {\r\n            \"id\": 1\r\n        }\r\n    }\r\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/virtual_devices",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "virtual_devices"
                      ]
                    }
                  },
                  "status": "Forbidden",
                  "code": 403,
                  "_postman_previewlanguage": null,
                  "header": [
                    {
                      "key": "X-Content-Type-Options",
                      "value": "nosniff"
                    },
                    {
                      "key": "X-XSS-Protection",
                      "value": "1"
                    },
                    {
                      "key": "Cache-Control",
                      "value": "no-cache, no-store, max-age=0, must-revalidate"
                    },
                    {
                      "key": "Pragma",
                      "value": "no-cache"
                    },
                    {
                      "key": "Expires",
                      "value": "0"
                    },
                    {
                      "key": "Strict-Transport-Security",
                      "value": "max-age=31536000 ; includeSubDomains"
                    },
                    {
                      "key": "X-Frame-Options",
                      "value": "SAMEORIGIN"
                    },
                    {
                      "key": "Content-Security-Policy",
                      "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:*  https://*.openstreetmap.org;"
                    },
                    {
                      "key": "Content-Type",
                      "value": "application/json;charset=UTF-8"
                    },
                    {
                      "key": "Content-Length",
                      "value": "140"
                    },
                    {
                      "key": "Date",
                      "value": "Thu, 30 Oct 2025 06:44:36 GMT"
                    },
                    {
                      "key": "Referrer-Policy",
                      "value": "no-referrer"
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"code\": \"331791\",\n    \"link\": \"https://support.supremainc.com/en/support/home\",\n    \"message\": \"License is required.\",\n    \"by\": \"web\"\n}"
                }
              ]
            },
            {
              "name": "Fetch Registered Virtual Devices",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/virtual_devices",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "virtual_devices"
                  ]
                },
                "description": "Retrieve a list of registered virtual devices."
              },
              "response": [
                {
                  "name": "Success",
                  "originalRequest": {
                    "method": "GET",
                    "header": [],
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/virtual_devices",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "virtual_devices"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": null,
                  "header": [
                    {
                      "key": "transfer-encoding",
                      "value": "chunked"
                    },
                    {
                      "key": "X-Content-Type-Options",
                      "value": "nosniff"
                    },
                    {
                      "key": "X-XSS-Protection",
                      "value": "1"
                    },
                    {
                      "key": "Cache-Control",
                      "value": "no-cache, no-store, max-age=0, must-revalidate"
                    },
                    {
                      "key": "Pragma",
                      "value": "no-cache"
                    },
                    {
                      "key": "Expires",
                      "value": "0"
                    },
                    {
                      "key": "Strict-Transport-Security",
                      "value": "max-age=31536000 ; includeSubDomains"
                    },
                    {
                      "key": "X-Frame-Options",
                      "value": "SAMEORIGIN"
                    },
                    {
                      "key": "Content-Security-Policy",
                      "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:*  https://*.openstreetmap.org;"
                    },
                    {
                      "key": "Content-Type",
                      "value": "application/json;charset=UTF-8"
                    },
                    {
                      "key": "Date",
                      "value": "Thu, 30 Oct 2025 06:46:54 GMT"
                    },
                    {
                      "key": "Referrer-Policy",
                      "value": "no-referrer"
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"VirtualDevices\": [\n        {\n            \"id\": 100001,\n            \"name\": \"Virtual Device 100001\",\n            \"description\": \"Virtual device for mobile punch import\",\n            \"device_group_id\": {\n                \"id\": 1,\n                \"name\": \"All Devices\"\n            }\n        }\n    ],\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\",\n        \"by\": \"web\"\n    }\n}"
                }
              ]
            },
            {
              "name": "Modify Existing Virtual Device",
              "request": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"VirtualDevice\": {\r\n        \"device_group_id\": {\r\n            \"id\": 1\r\n        }\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/virtual_devices/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "virtual_devices",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "100001",
                      "description": "ID of the Virtual Device which will be modified."
                    }
                  ]
                },
                "description": "Modify existing virtual device details.  \nOnly updatable fields need to be included."
              },
              "response": [
                {
                  "name": "Success",
                  "originalRequest": {
                    "method": "PUT",
                    "header": [],
                    "body": {
                      "mode": "raw",
                      "raw": "{\r\n    \"VirtualDevice\": {\r\n        \"device_group_id\": {\r\n            \"id\": 1\r\n        }\r\n    }\r\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/virtual_devices/:id",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "virtual_devices",
                        ":id"
                      ],
                      "variable": [
                        {
                          "key": "id",
                          "value": "100001",
                          "description": "ID of the Virtual Device which will be modified."
                        }
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": null,
                  "header": [
                    {
                      "key": "transfer-encoding",
                      "value": "chunked"
                    },
                    {
                      "key": "X-Content-Type-Options",
                      "value": "nosniff"
                    },
                    {
                      "key": "X-XSS-Protection",
                      "value": "1"
                    },
                    {
                      "key": "Cache-Control",
                      "value": "no-cache, no-store, max-age=0, must-revalidate"
                    },
                    {
                      "key": "Pragma",
                      "value": "no-cache"
                    },
                    {
                      "key": "Expires",
                      "value": "0"
                    },
                    {
                      "key": "Strict-Transport-Security",
                      "value": "max-age=31536000 ; includeSubDomains"
                    },
                    {
                      "key": "X-Frame-Options",
                      "value": "SAMEORIGIN"
                    },
                    {
                      "key": "Content-Security-Policy",
                      "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:*  https://*.openstreetmap.org;"
                    },
                    {
                      "key": "Content-Type",
                      "value": "application/json;charset=UTF-8"
                    },
                    {
                      "key": "Date",
                      "value": "Thu, 30 Oct 2025 06:52:34 GMT"
                    },
                    {
                      "key": "Referrer-Policy",
                      "value": "no-referrer"
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"VirtualDevices\": [\n        {\n            \"id\": 100001,\n            \"name\": \"Virtual Device 100001\",\n            \"description\": \"Virtual device for mobile punch import\",\n            \"device_group_id\": {\n                \"id\": 1\n            }\n        }\n    ],\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"success\",\n        \"by\": \"web\"\n    }\n}"
                }
              ]
            },
            {
              "name": "Delete Virtual Device",
              "request": {
                "method": "DELETE",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/virtual_devices?id=100002",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "virtual_devices"
                  ],
                  "query": [
                    {
                      "key": "id",
                      "value": "100002",
                      "description": "ID of the Virtual Devices which will be deleted. Use plus symbol (+) to delimit multiple IDs (e.g. 10001+10002)"
                    }
                  ]
                }
              },
              "response": [
                {
                  "name": "Success",
                  "originalRequest": {
                    "method": "DELETE",
                    "header": [],
                    "url": {
                      "raw": "{{baseUrl}}/api/v2/virtual_devices?id=100002",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "v2",
                        "virtual_devices"
                      ],
                      "query": [
                        {
                          "key": "id",
                          "value": "100002",
                          "description": "ID of the Virtual Devices which will be deleted."
                        }
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": null,
                  "header": [
                    {
                      "key": "transfer-encoding",
                      "value": "chunked"
                    },
                    {
                      "key": "X-Content-Type-Options",
                      "value": "nosniff"
                    },
                    {
                      "key": "X-XSS-Protection",
                      "value": "1"
                    },
                    {
                      "key": "Cache-Control",
                      "value": "no-cache, no-store, max-age=0, must-revalidate"
                    },
                    {
                      "key": "Pragma",
                      "value": "no-cache"
                    },
                    {
                      "key": "Expires",
                      "value": "0"
                    },
                    {
                      "key": "Strict-Transport-Security",
                      "value": "max-age=31536000 ; includeSubDomains"
                    },
                    {
                      "key": "X-Frame-Options",
                      "value": "SAMEORIGIN"
                    },
                    {
                      "key": "Content-Security-Policy",
                      "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:*  https://*.openstreetmap.org;"
                    },
                    {
                      "key": "Content-Type",
                      "value": "application/json;charset=UTF-8"
                    },
                    {
                      "key": "Date",
                      "value": "Thu, 30 Oct 2025 06:56:53 GMT"
                    },
                    {
                      "key": "Referrer-Policy",
                      "value": "no-referrer"
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Devices deleted successfully\",\n        \"by\": \"web\"\n    }\n}"
                }
              ]
            },
            {
              "name": "Import Events",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"packet_device_id\": 100001,\r\n    \"is_virtual_device\": \"true\",\r\n    \"events\": [\r\n        {\r\n            \"dev_id\": 100001,\r\n            \"evt\": 6400,\r\n            \"datetime\": \"2025-10-30T15:12:00Z\",\r\n            \"user_id\": \"1\",\r\n            \"tna_key\": \"1\"\r\n        },\r\n        {\r\n            \"dev_id\": 100001,\r\n            \"evt\": 6400,\r\n            \"datetime\": \"2025-10-30T15:13:01Z\",\r\n            \"user_id\": \"1\",\r\n            \"tna_key\": \"1\"\r\n        }\r\n    ]\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/events/import",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "events",
                    "import"
                  ]
                },
                "description": "Imports external access events into the system.\n\nAllows batch import of **Access Granted (4088)** and **Access Denied (6400)** events generated by a **Virtual Device**.\n\nThis is typically used when an external app generates punch logs (e.g., mobile attendance).\n\n#### Each imported event is stored as a normal BioStar X event, visible in event logs and reports.\n\nImportant Rules\n\n- `packet_device_id` and every `events[].dev_id` must match.\n    \n- Only **virtual devices** are allowed.\n    \n- Only **event codes 4088 or 6400** are permitted.\n    \n- `datetime` must be in **UTC** (convert local time accordingly).\n    \n- All `user_id`s must exist in the system.\n    \n- Each imported event will be logged individually (one row per event).\n    \n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| packet_device_id | Number | Y | Must match `dev_id` of all included events. |\n| is_virtual_device | Boolean | Y | Indicates whether the device is virtual. Must be `true`. |\n| events | Array | y | List of event objects to import. |\n| events.dev_id | Number | Y | Must match `packet_device_id`. |\n| events.evt | Number | Y | Event code — only `4088` or `6400` are allowed. |\n| events.datetime | String | Y | Event timestamp in UTC. |\n| events.user_id | String | Y | Must correspond to a valid user. |\n| events.tna_key | String | N | Optional transaction key or reference. |"
              },
              "response": [
                {
                  "name": "Success",
                  "originalRequest": {
                    "method": "POST",
                    "header": [],
                    "body": {
                      "mode": "raw",
                      "raw": "{\r\n    \"packet_device_id\": 100001,\r\n    \"is_virtual_device\": \"true\",\r\n    \"events\": [\r\n        {\r\n            \"dev_id\": 100001,\r\n            \"evt\": 6400,\r\n            \"datetime\": \"2025-10-30T15:12:00Z\",\r\n            \"user_id\": \"2\",\r\n            \"tna_key\": \"1\"\r\n        },\r\n        {\r\n            \"dev_id\": 100001,\r\n            \"evt\": 6400,\r\n            \"datetime\": \"2025-10-30T15:13:01Z\",\r\n            \"user_id\": \"2\",\r\n            \"tna_key\": \"1\"\r\n        }\r\n    ]\r\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "url": {
                      "raw": "{{baseUrl}}/api/events/import",
                      "host": [
                        "{{baseUrl}}"
                      ],
                      "path": [
                        "api",
                        "events",
                        "import"
                      ]
                    }
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": null,
                  "header": [
                    {
                      "key": "Status",
                      "value": "200 OK"
                    },
                    {
                      "key": "X-Content-Type-Options",
                      "value": "nosniff"
                    },
                    {
                      "key": "X-XSS-Protection",
                      "value": "1"
                    },
                    {
                      "key": "Cache-Control",
                      "value": "no-cache, no-store, max-age=0, must-revalidate"
                    },
                    {
                      "key": "Pragma",
                      "value": "no-cache"
                    },
                    {
                      "key": "Expires",
                      "value": "0"
                    },
                    {
                      "key": "Strict-Transport-Security",
                      "value": "max-age=31536000 ; includeSubDomains"
                    },
                    {
                      "key": "X-Frame-Options",
                      "value": "SAMEORIGIN"
                    },
                    {
                      "key": "Content-Security-Policy",
                      "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:*  https://*.openstreetmap.org;"
                    },
                    {
                      "key": "Content-Type",
                      "value": "application/json;charset=UTF-8"
                    },
                    {
                      "key": "Content-Length",
                      "value": "106"
                    },
                    {
                      "key": "Date",
                      "value": "Thu, 30 Oct 2025 07:09:05 GMT"
                    },
                    {
                      "key": "Referrer-Policy",
                      "value": "no-referrer"
                    }
                  ],
                  "cookie": [],
                  "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
                }
              ]
            }
          ],
          "description": "This feature allows external systems (e.g., mobile T&A apps) to send **punch/access events** directly to **BioStar X** **without database-level integration**.\n\nTo ensure data consistency, each event must be associated with a **Virtual Device** — a device record created inside BioStar X to represent the external source.\n\n### **Notes:**\n\n- Virtual Devices are **non-functional placeholders** and **cannot be used for access control, doors, or Advanced AC features**. Their only purpose is to logically link imported events to a known device identity.\n    \n- **BioStar X Event Log API** license is required for the feature.\n    \n\n---\n\n### Step-by-Step: How to Use\n\n##### Step 1: Create a Virtual Device\n\n- Use `POST /api/v2/virtual_devices` to create a new virtual device.\n    \n- Usable ID range: **100001–999999**\n    \n- Ensure it’s **not a duplicate ID or name**.\n    \n- Assign it to an existing **device group**.\n    \n\n---\n\n##### Step 2: Verify Virtual Device\n\n- Use `GET /api/v2/virtual_devices`\n    \n\nto confirm your virtual device is registered and visible.\n\n---\n\n##### Step 3: Import Events\n\n- Prepare your event payload with the same `packet_device_id` as the virtual device ID.\n    \n- Ensure all timestamps are in **UTC**.\n    \n- Use `POST /api/events/import` to upload multiple events at once.\n    \n\n---\n\n##### Step 4: Verify Event Import\n\n- After import, use existing endpoints such as:\n    \n    - `POST /api/events/search`\n        \n\nto confirm the events are visible in BioStar X event logs.\n\n---\n\n##### Step 5: Troubleshooting\n\nIf an error occurs:\n\n- Check that `is_virtual_device` is `\"true\"`.\n    \n- Confirm all `user_id`s exist.\n    \n- Verify datetime formatting (`YYYY-MM-DDTHH:mm:ssZ`).\n    \n- Ensure the event code is either `4088` or `6400`."
        },
        {
          "name": "View Event Types",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/event_types?is_break_glass=false&setting_alert=true&setting_all=true",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "event_types"
              ],
              "query": [
                {
                  "key": "is_break_glass",
                  "value": "false",
                  "description": "Toggle true to list events that users have manually changed the name of. Toggle other parameters to false for this to work."
                },
                {
                  "key": "setting_alert",
                  "value": "true",
                  "description": "Toggle true to list events which will trigger alert. Marked by 'alertable' parameter on the event. 'enable_alert' is used for marking which event will show a pop up notice on Bio Star 2."
                },
                {
                  "key": "setting_all",
                  "value": "true",
                  "description": "Toggle true to list all events recorded on database."
                }
              ]
            },
            "description": "This API is used for listing event types recorded on BioStar X."
          },
          "response": []
        },
        {
          "name": "Download Events Exported CSV",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/download/:exported_file",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "download",
                ":exported_file"
              ],
              "variable": [
                {
                  "key": "exported_file",
                  "value": "Report_20220204T165145.csv",
                  "description": "File name which will be downloaded"
                }
              ]
            },
            "description": "This API is used to download Events exported .csv from BioStar X Server.\n\nUse the filename which resulted from `POST /api/events/export`\n\nPut the filename to download on the PATH of the API."
          },
          "response": []
        },
        {
          "name": "Search Events",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"limit\": 20,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"datetime\",\r\n                \"operator\": 3,\r\n                \"values\": [\r\n                    \"2022-03-01T15:00:00.000Z\",\r\n                    \"2024-03-02T16:59:59.000Z\"\r\n                ]\r\n            },\r\n            {\r\n                \"column\": \"id\",\r\n                \"operator\": 1,\r\n                \"values\": [\r\n                    \"60491\"\r\n                ]\r\n            },            \r\n            {\r\n                \"column\": \"user_id.user_id\",\r\n                \"operator\": 0,\r\n                \"values\": [\r\n                    \"2\"\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"datetime\",\r\n                \"descending\": true\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/events/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "events",
                "search"
              ]
            },
            "description": "This API is used to view events registered on BioStar X.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| limit | Number | Y | Limit the response records by the value stated on this parameter |\n| conditions | Array | N | When in use, certain key-value is mandatory. |\n| conditions:column | String | Y | Field which the conditions will be based from |\n| conditions:operator | Number | Y | Condition Operator  <br>EQUAL : 0,  <br>NOT_EQUAL : 1,  <br>CONTAINS : 2,  <br>BETWEEN : 3,  <br>LIKE : 4,  <br>GREATER : 5,  <br>LESS : 6  <br>  <br>For field encrypted in encryption mode (ex. user_id.user_id), it only supports Equal (0), Not Equal (1), and Contains (2). |\n| conditions:values | Datetime | Y | Value of the conditions |\n| orders | Array | N | When in use, certain key-value is mandatory. |\n| orders:column | String | Y | Field which the sorting will be based on |\n| orders:descending | Boolean | N | Toggle true to set the sorting as descending |"
          },
          "response": []
        },
        {
          "name": "Fetch Event Image",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/events/images/:image_data",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "events",
                "images",
                ":image_data"
              ],
              "variable": [
                {
                  "key": "image_data",
                  "value": "",
                  "description": "(String, Required) – The identifier of the image, obtained from the event search response."
                }
              ]
            },
            "description": "When query events through **Search Events** (`/api/events/search`), events that contain image logs include the following fields in the response:\n\n``` json\n\"image_id\": {\n  \"image_data\": \"1755062341_547838635_159337\",\n  \"image_type\": \"JPG\",\n  \"photo\": \"false\"\n}\n\n```\n\nThe `image_data` value can be used to retrieve the corresponding image file."
          },
          "response": []
        },
        {
          "name": "Search Thermal Events",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"limit\": 51,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"datetime\",\r\n                \"operator\": 3,\r\n                \"values\": [\r\n                    \"2021-01-27T16:00:00.000Z\",\r\n                    \"2022-01-28T15:59:59.000Z\"\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"datetime\",\r\n                \"descending\": false\r\n            }\r\n        ]\r\n    }\r\n}\r\n\r\n",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/events/search/thermal",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "events",
                "search",
                "thermal"
              ]
            },
            "description": "This API is used to view events with thermal data.\n\nParameters on this API is the same as Search Events."
          },
          "response": []
        },
        {
          "name": "Export as CSV",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"datetime\",\r\n                \"operator\": 3,\r\n                \"values\": [\r\n                    \"2022-01-27T16:00:00.000Z\",\r\n                    \"2022-01-28T15:59:59.000Z\"\r\n                ]\r\n            }\r\n        ],\r\n        \"offset\": 0,\r\n        \"columns\": [\r\n            \"datetime\",\r\n            \"door_id.name\",\r\n            \"device_id.id\",\r\n            \"device_id.name\",\r\n            \"user_group_id\",\r\n            \"user_id\",\r\n            \"temperature\",\r\n            \"event_type_id\",\r\n            \"tna_key\"\r\n        ],\r\n        \"headers\": [\r\n            \"Date\",\r\n            \"Door\",\r\n            \"Device ID\",\r\n            \"Device\",\r\n            \"User Group\",\r\n            \"User\",\r\n            \"Temperature\",\r\n            \"Event\",\r\n            \"TNA Key\"\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/events/export?time_offset=480&use_centigrade=true",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "events",
                "export"
              ],
              "query": [
                {
                  "key": "time_offset",
                  "value": "480",
                  "description": "Shift time on the exported file by n minutes"
                },
                {
                  "key": "use_centigrade",
                  "value": "true",
                  "description": "Toggle true to set temperature as celcius, false as fahrenheit."
                }
              ]
            },
            "description": "This API is used to export events as a `.csv` file.\n\nExported `.csv` will be saved on `[BioStar 2 Server installation path]/nginx/html/download`.\n\nTo get it from the server, use `Download Events Exported CSV` API.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| conditions | Array | N | A set of conditions to filter the response of the API. On this case, it's using the datetime field to filter according to the values given. |\n| offset | Number | N | Shift the response records by n records. |\n| columns | Array | Y | List of fields which will be exported. Refer to the table below for list of available fields. |\n| headers | Array | Y | Name of the header on the exported .csv file. |\n\n#### Available Column Fields:\n\n| **Fields** | **Description** |\n| --- | --- |\n| datetime | Device timestamp (timezone/DST applied) |\n| device_id.id | Device ID (numeric) |\n| device_id.name | Device name |\n| door_id.name | Door name |\n| elevator_id.name | Elevator name + floor information |\n| event_type_id | Event type name (multilingual support) |\n| user_id | User ID + name + IP |\n| user_group_id | User group name |\n| zone_id.name | Zone name |\n| tna_key | TNA caption/key |\n| temperature | Temperature (°C or °F depending on `use_centigrade` setting) |\n| user_phone | User phone number (thermal export) |\n| user_email | User email address (thermal export) |"
          },
          "response": []
        },
        {
          "name": "List All Alerts",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"offset\": 0,\r\n        \"limit\": 50,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"status\",\r\n                \"operator\": 0,\r\n                \"values\": [\r\n                    \"1\"\r\n                ]\r\n            },\r\n            {\r\n                \"column\": \"event_id.datetime\",\r\n                \"operator\": 3,\r\n                \"values\": [\r\n                    \"2023-01-01T00:00:00.00Z\",\r\n                    \"2023-03-02T00:00:00.00Z\"\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"event_id.datetime\",\r\n                \"descending\": true\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/alerts/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "alerts",
                "search"
              ]
            },
            "description": "This API is used to view alert events which can be filtered using available parameters.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| offset | Number | N | Shift response records by n record(s) |\n| limit | Number | N | Limit response records by n record(s) |\n| conditions:column | String | N | Field which the condition will be based on |\n| conditions:operator | Number | N |  |\n| conditions:values | String | N | Value of the condition based on the field selected on conditions:column |\n| orders:column | String | N | Parameter which the sorting will be based on |\n| orders:descending | Boolean | N | Sort by descending or ascending. True for descending. |\n\nIt is required to at least put this on BODY to run the API successfully: {\"Query\": {}}\n\nRunning the API without parameters will show all alerts."
          },
          "response": []
        },
        {
          "name": "List All Alerts: Filter by Status",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"status\",\r\n                \"operator\": 0,\r\n                \"values\": [\r\n                    \"1\"\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"event_id.datetime\",\r\n                \"descending\": true\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/alerts/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "alerts",
                "search"
              ]
            },
            "description": "This example shows how to use the parameters on this API to filter the response according to the status of the alert events.\n\nWhere:  \n0 = Ignored Alert Events  \n1 = Acknowledged Alert Events\n\nTo show all alert events regardless of status, remove the condition from the BODY."
          },
          "response": []
        },
        {
          "name": "List All Alerts: Filter & Sort by Date",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"event_id.datetime\",\r\n                \"operator\": 3,\r\n                \"values\": [\r\n                    \"2023-02-02T00:00:00.00Z\",\r\n                    \"2023-02-03T00:00:00.00Z\"\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"event_id.datetime\",\r\n                \"descending\": true\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/alerts/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "alerts",
                "search"
              ]
            },
            "description": "This example shows how to use the parameters on this API to filter responses according to the datetime of the alert events."
          },
          "response": []
        },
        {
          "name": "Update Alert History",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Alert\": {\r\n        \"event_id\": {\r\n            \"datetime\": \"2022-02-02T00:00:00.00Z\"\r\n        },\r\n        \"status\": \"1\",\r\n        \"ack_user_id\": {\r\n            \"user_id\": \"1\"\r\n        },\r\n        \"ack_message\": \"test\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/alerts/:alert_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "alerts",
                ":alert_id"
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "164379073505437203680000021611",
                  "description": "Unique ID recorded on hint parameter (POST /api/events/search)"
                }
              ]
            },
            "description": "This API is used to log `alertable: true` events (`GET /api/event_types`) to Alert Collection (`POST /api/alerts/search`)\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| event_id:datetime | DateTime | Y | Datetime as shown on events |\n| status | Number | Y | Default: 1 |\n| user_id | String | Y | User ID/Name which will be recorded on the Alert Log. Default: 1 |\n| ack_message | String | Y | Custom message which will be recorded on the Alert Log |"
          },
          "response": []
        },
        {
          "name": "View a Muster Zone Status",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"limit\": 51\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones/:id/tracking",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones",
                ":id",
                "tracking"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "32787"
                }
              ]
            },
            "description": "This API is used to view a muster zone status.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| limit | Number | Y | Specify the number of records which shown on the response |"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Audit",
      "item": [
        {
          "name": "Audit Search",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n  \"Query\": {\r\n    \"offset\": 0,\r\n    \"limit\": 5,\r\n    \"conditions\": [\r\n      {\r\n        \"column\": \"DATE\",\r\n        \"operator\": 3,\r\n        \"values\": [\r\n          \"2024-02-17T16:00:00.000Z\",\r\n          \"2024-03-18T15:59:59.000Z\"\r\n        ]\r\n      }\r\n    ],\r\n    \"total\": false\r\n  }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/audit/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "audit",
                "search"
              ]
            },
            "description": "This API is used to view Audit Trail logs.\n\nIt is possible to use multiple conditions in a request. Separate each condition using comma (,).\n\nExample:\n\n\\[ {condition 1}, {condition 2}, .. \\]\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| offset | Number | N | Offset the response's records by the specified value. |\n| limit | Number | Y | Limit the number of response's records by the specified value. |\n| total | Boolean | N | Default: false  <br>Toggle true to get total count of the Audit Trail based on condition(s) set. |\n| conditions | Array | N | A set of conditions to filter the Audit Trails logs. |\n| conditions.column | String | N | See below |\n| conditions.operator | Number | N | See below |\n| conditions.values | Array | N | See below |\n\n##### Condition Operator:\n\n| **column** | **operator** | **values** |\n| --- | --- | --- |\n| DATE | 3 | ISO-8601 date format. Value of **from** and **to** are separated using comma (,) |\n| USRID | 2 | Make use of Audit Search User to get the required value. Value format: \\[\"UserName(UserID)\"\\].  <br>Use comma (,) to separate values. |\n| PERM | 2 | Make use of Audit Search Oerator Level to get the required value.  <br>Use comma (,) to separate values. |\n| IP | 2 | Make use of Audit Search IP List to get the required value.  <br>Use comma (,) to separate values. |\n| MENU | 2 | Values:  <br>\"access_level\"  <br>\"access_group\"  <br>\"setting\"  <br>\"setting.permission\"  <br>\"setting.preference\"  <br>\"setting.server\"  <br>\"setting.wiegand_format\"  <br>\"setting.smartcard\"  <br>\"setting.trigger_action\"  <br>\"setting.event_type\"  <br>\"setting.image_filter\"  <br>\"setting.custom_field\"  <br>\"setting.system_config\"  <br>\"setting.face_group\"  <br>\"setting.schedule\"  <br>\"setting.holiday_group\"  <br>\"setting.output_signal\"  <br>\"setting.dst\"  <br>\"setting.mobileCredential\"  <br>\"system\"  <br>\"user\"  <br>\"device\"  <br>\"door\"  <br>\"elevator\"  <br>\"zone\"  <br>\"floor_level\"  <br>\"graphicmap\"  <br>Use comma (,) to separate values. |\n| TARGET | 2 | Make use of Audit Search Target List to get the required value.  <br>Use comma (,) to separate values. |\n| METHOD | 2 | 1: Add  <br>3: Update  <br>4: Delete  <br>5: Action  <br>Use comma (,) to separate values. |"
          },
          "response": []
        },
        {
          "name": "Audit Search User",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Userlist\": {\r\n        \"search\": \"ag\",\r\n        \"limit\": 201,\r\n        \"offset\": 0\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/audit/userlist",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "audit",
                "userlist"
              ]
            },
            "description": "This API is used to filter user by the specified input.\n\nDo note the API will only show records of user which have Audit Trail logs only.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| search | String | N | Search term to filter the user with Audit Trail log.  <br>To show all users which have Audit Trail logs, simply remove this parameter from the request. |\n| limit | Number | N | Limit the number of response's records by the specified value. |\n| offset | Number | N | Offset the response's records by the specified value. |"
          },
          "response": []
        },
        {
          "name": "Audit Search Operator Level",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Permlist\": {\r\n        \"search\": \"a\",\r\n        \"limit\": 201,\r\n        \"offset\": 0\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/audit/permlist",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "audit",
                "permlist"
              ]
            },
            "description": "This API is used to filter Operator Level by the specified input.\n\nDo note the API will only show records of Operator Level which have Audit Trail logs only.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| search | String | N | Search term to filter the Operator Level with Audit Trail log.  <br>To show all Operator Level which have Audit Trail logs, simply remove this parameter from the request. |\n| limit | Number | N | Limit the number of response's records by the specified value. |\n| offset | Number | N | Offset the response's records by the specified value. |"
          },
          "response": []
        },
        {
          "name": "Audit Search IP List",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Iplist\": {\r\n        \"search\": \"1\",\r\n        \"limit\": 201,\r\n        \"offset\": 0\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/audit/iplist",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "audit",
                "iplist"
              ]
            },
            "description": "This API is used to filter IP records by the specified input.\n\nDo note the API will only show records which have Audit Trail logs only.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| search | String | N | Search term to filter the IP with Audit Trail log.  <br>To show all IP which have Audit Trail logs, simply remove this parameter from the request. |\n| limit | Number | N | Limit the number of response's records by the specified value. |\n| offset | Number | N | Offset the response's records by the specified value. |"
          },
          "response": []
        },
        {
          "name": "Audit Search Target List",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Targetlist\": {\r\n        \"search\": \"p\",\r\n        \"limit\": 201,\r\n        \"offset\": 0\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/audit/targetlist",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "audit",
                "targetlist"
              ]
            },
            "description": "This API is used to filter Target records by the specified input.\n\nDo note the API will only show records which have Audit Trail logs only.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| search | String | N | Search term to filter the Target with Audit Trail log.  <br>To show all Target which have Audit Trail logs, simply remove this parameter from the request. |\n| limit | Number | N | Limit the number of response's records by the specified value. |\n| offset | Number | N | Offset the response's records by the specified value. |"
          },
          "response": []
        },
        {
          "name": "Audit CSV Export",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"offset\": 0,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"DATE\",\r\n                \"operator\": 3,\r\n                \"values\": [\r\n                    \"2024-02-17T16:00:00.000Z\",\r\n                    \"2024-03-18T15:59:59.000Z\"\r\n                ]\r\n            }\r\n        ],\r\n        \"columns\": [\r\n            \"DATE\",\r\n            \"USRID\",\r\n            \"PERM\",\r\n            \"IP\",\r\n            \"MENU\",\r\n            \"TARGET\",\r\n            \"METHOD\",\r\n            \"CONTENT\"\r\n        ],\r\n        \"headers\": [\r\n            \"Datetime\",\r\n            \"User\",\r\n            \"Operator Level\",\r\n            \"IP\",\r\n            \"Category\",\r\n            \"Target\",\r\n            \"Action\",\r\n            \"Modification\"\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/audit/export?time_offset=480",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "audit",
                "export"
              ],
              "query": [
                {
                  "key": "time_offset",
                  "value": "480",
                  "description": "Adjust the time value according to the required Time Zone. If the required TZ is UTC+8, then the value will be 480 (60 x 8)."
                }
              ]
            },
            "description": "This API is used to generate CSV file based on the parameters.\n\nMake use of `Events\\Download Events Exported CSV` API to download the exported CSV.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| offset | Number | N | Offset the response's records by the specified value. |\n| conditions | Array | N | See `Audit Search` for usage. |\n| columns | Array | N | List of columns which will be included on the CSV. |\n| headers | Array | N | Header name which will be used on the CSV. |"
          },
          "response": []
        }
      ]
    },
    {
      "name": "Zones",
      "item": [
        {
          "name": "Occupancy Limit",
          "item": [
            {
              "name": "Occupancy: Create New",
              "request": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"is_enabled\": 1,\r\n    \"name\": \"OccupancyZone1\",\r\n    \"zone_type\": 11,\r\n    \"status\": 0,\r\n    \"occupancy_detail\": {\r\n        \"limit_count\": \"100\",\r\n        \"entry_devices\": [\r\n            \"543720368\"\r\n        ],\r\n        \"exit_devices\": [\r\n            \"542353521\"\r\n        ],\r\n        \"almost_full_alert_setting\": {\r\n            \"level\": 1,\r\n            \"step_1\": \"95\",\r\n            \"step_2\": 0\r\n        },\r\n        \"auto_reset_count_time\": {\r\n            \"is_enabled\": \"1\",\r\n            \"minute\": 1439\r\n        },\r\n        \"network_fail_action\": \"0\",\r\n        \"bypass_groups\": [\r\n            {\r\n                \"acsgruid\": \"1\"\r\n            }\r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy?time_zone=25",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy"
                  ],
                  "query": [
                    {
                      "key": "time_zone",
                      "value": "25",
                      "description": "Time Zone ID:\nid : 0, offset : -720\nid : 1, offset : -660\nid : 2, offset : -600\nid : 3-1, offset : -570\nid : 3, offset : -540\nid : 4, offset : -480\nid : 5, offset : -420\nid : 6, offset : -360\nid : 7, offset : -300\nid : 8-1, offset : -270\nid : 8, offset : -240\nid : 9, offset : -210\nid : 10, offset : -180\nid : 11, offset : -120\nid : 12, offset : -60\nid : 13, offset : 0\nid : 14, offset : +60\nid : 15, offset : +120\nid : 16, offset : +180\nid : 17, offset : +210\nid : 18, offset : +240\nid : 19, offset : +270\nid : 20, offset : +300\nid : 21, offset : +330\nid : 22, offset : +345\nid : 23, offset : +360\nid : 23+1, offset : +390\nid : 24, offset : +420\nid : 25, offset : +480\nid : 25+1, offset : +510\nid : 25+2, offset : +525\nid : 26, offset : +540\nid : 27, offset : +570\nid : 28, offset : +600\nid : 28+1, offset : +630\nid : 29, offset : +660\nid : 30, offset : +720\nid : 30+1, offset : +765\nid : 31, offset : +780\nid : 32, offset : +840\n\nDefault value : 26\n"
                    }
                  ]
                },
                "description": "You can manage and control the population density of certain areas with Occupancy Limit Zone to prevent overcrowding. You can also monitor the occupancy limit zone status or set an alert to get notified when the zone has reached capacity.\n\nUp to 100 occupancy limit zones can be added.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| is_enabled |  |  | Deactivate the occupancy limit zone. If the zone is deactivated, both Count that refers to the number of users in the zone and Count Bypass settings will be initialized. Select Active to enable it. |\n| name | String |  | Enter an occupancy limit zone name. Name can be up to 48 characters in length and cannot be set to the same name as other zones. |\n| zone_type | Number |  | View the zone type. |\n| status | Number |  |  |\n| limit_count | Number |  | Enter the number of users who will be restricted from entering the zone. If the number of users in the zone reaches the limit, entry will be restricted. You can enter a number from 0 to 10,000, and if it is set to 0, people can enter the zone without limit. |\n| entry_devices | Number |  | Select a device to use for entry. You can select a device from the list of added devices. |\n| exit_devices | Number |  | Select a device to use at exit. You can select a device from the list of added devices. |\n| almost_full_alert_setting:level | Number |  | Set an alert to an administrator or set to save event logs before Count reaches the occupancy limit. |\n| almost_full_alert_setting:step_1 | Number |  | The first alert for occupancy limit. |\n| almost_full_alert_setting:step_2 | Number |  | The second alert for occupancy limit. |\n| auto_reset_count_time:is_enabled | Boolean |  | Toggle to set the time to automatically reset occupancy limit Count. |\n| auto_reset_count_time:minute | Number |  | The Count will be initialized at the time you set every day. |\n| network_fail_action | Number |  | Set whether to allow users to enter or leave when a network error occurs in the device set in the zone. If you set it to Allow Entry and Exit, it stops entry restrictions when the device loses network connection, and people can enter the zone even if Count in the zone exceeds the occupancy limit. |\n| bypass_groups:acsgruid | Number |  | Set Count Bypass by selecting bypass groups to allow users in the group to enter the zone at any time without affecting the number of Count. The Bypass Count column displays the number of people from Count Bypass in the zone list.  <br>It is not able to use the Count Bypass feature when you set Thermal & Mask Check Mode as Check without authentication while using the device with a thermal camera.  <br>Up to 16 bypass groups can be added. |\n\n#### Notes:\n\n- Devices and firmware versions that are compatible with the occupancy limit zone features are as follows:\n    - FaceStation F2 firmware version 1.1.0 or later\n        \n    - FaceStation 2 firmware version 1.5.0 or later\n        \n- A device cannot be assigned to the entry device and exit device simultaneously.\n    \n- You can set entry devices and exit devices up to 128 in total.\n    \n- A device using Dual Authentication cannot be set as the entry or exit device.\n    \n- Set the time of Auto Count Reset based on UTC in the country where the zone is located. For example, if the time is set to 00:00 in UTC+9, the count is automatically reset at 01:00 in UTC+10.\n    \n- You can set up two alerts for Count Alert and only enter numbers smaller than the Limit value. The values of both alerts must be different."
              },
              "response": []
            },
            {
              "name": "Occupancy: Update",
              "request": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"is_enabled\": 1,\r\n    \"name\": \"OccupancyZone1\",\r\n    \"zone_type\": 11,\r\n    \"status\": 0,\r\n    \"occupancy_detail\": {\r\n        \"limit_count\": \"100\",\r\n        \"entry_devices\": [\r\n            \"543720368\"\r\n        ],\r\n        \"exit_devices\": [\r\n            \"542353521\"\r\n        ],\r\n        \"almost_full_alert_setting\": {\r\n            \"level\": 1,\r\n            \"step_1\": \"95\",\r\n            \"step_2\": 0\r\n        },\r\n        \"auto_reset_count_time\": {\r\n            \"is_enabled\": \"1\",\r\n            \"minute\": 1439\r\n        },\r\n        \"network_fail_action\": \"0\",\r\n        \"bypass_groups\": [\r\n            {\r\n                \"acsgruid\": \"1\"\r\n            }\r\n        ]\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/:id?time_zone=25",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    ":id"
                  ],
                  "query": [
                    {
                      "key": "time_zone",
                      "value": "25",
                      "description": "Time Zone ID:\nid : 0, offset : -720\nid : 1, offset : -660\nid : 2, offset : -600\nid : 3-1, offset : -570\nid : 3, offset : -540\nid : 4, offset : -480\nid : 5, offset : -420\nid : 6, offset : -360\nid : 7, offset : -300\nid : 8-1, offset : -270\nid : 8, offset : -240\nid : 9, offset : -210\nid : 10, offset : -180\nid : 11, offset : -120\nid : 12, offset : -60\nid : 13, offset : 0\nid : 14, offset : +60\nid : 15, offset : +120\nid : 16, offset : +180\nid : 17, offset : +210\nid : 18, offset : +240\nid : 19, offset : +270\nid : 20, offset : +300\nid : 21, offset : +330\nid : 22, offset : +345\nid : 23, offset : +360\nid : 23+1, offset : +390\nid : 24, offset : +420\nid : 25, offset : +480\nid : 25+1, offset : +510\nid : 25+2, offset : +525\nid : 26, offset : +540\nid : 27, offset : +570\nid : 28, offset : +600\nid : 28+1, offset : +630\nid : 29, offset : +660\nid : 30, offset : +720\nid : 30+1, offset : +765\nid : 31, offset : +780\nid : 32, offset : +840\nDefault value : 26\n"
                    }
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "32784",
                      "description": "ID of the occupancy zone which will be updated."
                    }
                  ]
                },
                "description": "This API is used to update occupancy zone configuration."
              },
              "response": []
            },
            {
              "name": "Occupancy: Delete",
              "request": {
                "method": "DELETE",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"ids\": [\r\n        542189540\r\n    ]\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy"
                  ]
                },
                "description": "This API is used to delete Occupancy Zone."
              },
              "response": []
            },
            {
              "name": "Occupancy: List All",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy"
                  ]
                },
                "description": "This API is used to list all configured Occupancy Zone."
              },
              "response": []
            },
            {
              "name": "Occupancy: Search by Name",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/search/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    "search",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "occ",
                      "description": "Name of the Occupancy Zone which will be searched."
                    }
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Occupancy: View Details",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/:id?time_zone=25",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    ":id"
                  ],
                  "query": [
                    {
                      "key": "time_zone",
                      "value": "25",
                      "type": "text"
                    }
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "32784",
                      "description": "ID of the Occupancy Zone which will be viewed."
                    }
                  ]
                }
              },
              "response": []
            },
            {
              "name": "Occupancy: List Dual Auth. Devices",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/devices/dual",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    "devices",
                    "dual"
                  ]
                },
                "description": "This API is used to get a list of dual authentication devices."
              },
              "response": []
            },
            {
              "name": "Occupancy: View Assigned Devices",
              "request": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/devices/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    "devices",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "32784",
                      "description": "ID of the Occupancy Zone"
                    }
                  ]
                },
                "description": "This API is used to list assigned devices on a Occupancy Zone."
              },
              "response": []
            },
            {
              "name": "Occupancy: Increase Count",
              "request": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/count/increase/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    "count",
                    "increase",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "32784",
                      "description": "ID of the Occupancy Limit."
                    }
                  ]
                },
                "description": "This API is used to increase an occupancy count.\n\nCount will be higher or equal to 0 and will be lower or equal to Count Limit."
              },
              "response": []
            },
            {
              "name": "Occupancy: Decrease Count",
              "request": {
                "method": "PUT",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/count/decrease/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    "count",
                    "decrease",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "32784",
                      "description": "ID of the Occupancy Limit"
                    }
                  ]
                },
                "description": "This API is used to decrease an occupancy count.\n\nCount will be higher or equal to 0 and will be lower or equal to Count Limit."
              },
              "response": []
            },
            {
              "name": "Occupancy: Set Count",
              "request": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"count\": \"85\"\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/count/set/:id",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    "count",
                    "set",
                    ":id"
                  ],
                  "variable": [
                    {
                      "key": "id",
                      "value": "32784",
                      "description": "ID of the Occupancy Limit."
                    }
                  ]
                },
                "description": "This API is used to set and occupancy limit count.\n\nCount value will be higher or equal to 0 and will be lower or equal to Count Limit.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| count | Number | Y | Set count value |"
              },
              "response": []
            },
            {
              "name": "Occupancy: Reset Count",
              "request": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"ids\": [\r\n        32784\r\n    ]\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/reset",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    "reset"
                  ]
                },
                "description": "This API is used to reset current counts and bypass counts of the occupancy limit zone."
              },
              "response": []
            },
            {
              "name": "Occupancy: Disable",
              "request": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"ids\": [\r\n        32784\r\n    ]\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/disable",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    "disable"
                  ]
                },
                "description": "This API is used to disable Occupancy Limit Zone."
              },
              "response": []
            },
            {
              "name": "Occupancy: Enable",
              "request": {
                "method": "PUT",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"ids\": [\r\n        32784\r\n    ]\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/v2/zones/occupancy/enable",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "v2",
                    "zones",
                    "occupancy",
                    "enable"
                  ]
                },
                "description": "This API is used to enable Occupancy Limit Zone."
              },
              "response": []
            }
          ]
        },
        {
          "name": "APB: Create",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Zone\": {\r\n        \"name\": \"APBZ1\",\r\n        \"description\": \"\",\r\n        \"zone_type\": \"0\",\r\n        \"is_global\": 1,\r\n        \"enable\": \"1\",\r\n        \"status\": 0,\r\n        \"antipassback\": {\r\n            \"apb_type\": 1,\r\n            \"reset_time\": 1440,\r\n            \"apb_use_door_sensor\": \"1\",\r\n            \"entry_devices\": [\r\n                {\r\n                    \"id\": 544140034\r\n                }\r\n            ],\r\n            \"exit_devices\": [\r\n                {\r\n                    \"id\": 542353521\r\n                }\r\n            ],\r\n            \"bypass_groups\": [\r\n                {\r\n                    \"id\": 1\r\n                }\r\n            ],\r\n            \"alarm_actions\": [],\r\n            \"apb_fail_action\": \"0\"\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones"
              ]
            },
            "description": "Anti-passback zone provides an enhanced function than the door based anti-passback feature.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter an anti-passback name. |\n| description | String | N | Enter an anti-passback description. |\n| zone_type | Number | Y | View the zone type. |\n| is_global | Boolean | Y | It is possible to set either Local or Global for the range of zone application. If Local is set, the zone can be set only with the entry devices and devices connected with RS-485, and if Global is set, the zone can be set with all devices enrolled in BioStar X. |\n| enable | Boolean | Y | Toggle to disable the anti-passback zone. |\n| status |  | N |  |\n| apb_type | Boolean | Y | Select an Anti-passback type. |\n| reset_time | Number | Y | You can set a time period so that all anti-passback violations can be deleted. This allows the user to be granted access after the time period. The maximum possible duration is 7 days (10080 minutes). If set to 0, anti-passpack violations will not be deleted and the users who have previously violated the anti-passback rule will not be granted access. |\n| apb_use_door_sensor | Boolean | Y | 0=OFF, 1=ON, 2=Door Config.  <br>You can set the range to apply the anti-passback. If Entry Confirmed APB is set to ON, the anti-passback is applied according to the actual operation of the door that the entry and exit device are configured. If this option is set to OFF, the rule is applied according to the user's authentication regardless of the door operation. When set to Follows door configuration, the anti-passback rule is applied according to the setting of the Use sensor when Entry Confirmed APB enabled option of the door. |\n| entry_devices:id | Number | Y | Select a device to use for entry. |\n| exit_devices:id | Number | Y | Select a device to use at exit. |\n| bypass_groups:id | Number | N | Select an access level. Users who have the access level will not be restricted by the anti-passback rule. |\n| alarm_actions | Array | N | Choose the operation to be triggered when an APB violation occurs. |\n| apb_fail_action | Number | N | 0=Open by Auth ,1=Open by Auth & Record APB Log ,2=Door Locked & Record APB Log.  <br>It is possible to set the door operation in case the communication between BioStar X and the device where anti-passback is set has been lost. Setting is available when Global is set for Mode. When Open by auth is set, the door opens when the user has been authenticated normally. When Open by auth & record APB log is set, an anti-passback violation alarm occurs and the door opens. When Door locked & record APB log is set, an anti-passback violation alarm occurs and the door does not open. |"
          },
          "response": []
        },
        {
          "name": "APB: Clear APB",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"AntiPassBackConfig\": {\r\n        \"Zone\": {\r\n            \"ZoneCollection\": {\r\n                \"rows\": [\r\n                    {\r\n                        \"id\": \"32774\"\r\n                    }\r\n                ]\r\n            }\r\n        },\r\n        \"UserType\": 1\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones/clear_apb_ex",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones",
                "clear_apb_ex"
              ]
            },
            "description": "This endpoint allows administrators to reset the Anti-Passback state within a zone. It can be applied either to **all users in the zone** or to a **specific set of users**.\n\n#### Body Parameters:\n\n| Parameter | Type | Required | Description |\n| --- | --- | --- | --- |\n| ZoneCollection.rows.id | String | Y | The ID of the APB zone to be cleared. |\n| UserType | Integer | Y | Specifies the clear mode:  <br>1 = Clear APB for all users.  <br>2 = Clear APB for specific users. |\n| User | Array | N | List of user objects with user_id. Required when UserType = 2. |\n\n#### Response Codes:\n\n- 200 OK: Request successful\n    \n- 400 Bad Request (Code 671): Zone ID mismatch (zone not found)\n    \n- 401 Unauthorized: Login required or invalid session token"
          },
          "response": [
            {
              "name": "APB: Clear All Users",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"AntiPassBackConfig\": {\r\n        \"Zone\": {\r\n            \"ZoneCollection\": {\r\n                \"rows\": [\r\n                    {\r\n                        \"id\": \"32769\"\r\n                    }\r\n                ]\r\n            }\r\n        },\r\n        \"UserType\": 1\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/zones/clear_apb_ex",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "zones",
                    "clear_apb_ex"
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Security-Policy",
                  "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:* https://*:7001 https://*.openstreetmap.org;"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json;charset=UTF-8"
                },
                {
                  "key": "Content-Length",
                  "value": "106"
                },
                {
                  "key": "Date",
                  "value": "Tue, 09 Sep 2025 09:43:33 GMT"
                },
                {
                  "key": "Referrer-Policy",
                  "value": "no-referrer"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"0\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Success\"\n    }\n}"
            },
            {
              "name": "APB: Clear Specific Users",
              "originalRequest": {
                "method": "POST",
                "header": [],
                "body": {
                  "mode": "raw",
                  "raw": "{\r\n    \"AntiPassBackConfig\": {\r\n        \"Zone\": {\r\n            \"ZoneCollection\": {\r\n                \"rows\": [\r\n                    {\r\n                        \"id\": \"32774\"\r\n                    }\r\n                ]\r\n            }\r\n        },\r\n        \"User\": [\r\n            {\r\n                \"user_id\": \"1\"\r\n            },\r\n            {\r\n                \"user_id\": \"3\"\r\n            }\r\n        ],\r\n        \"UserType\": 2\r\n    }\r\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "url": {
                  "raw": "{{baseUrl}}/api/zones/clear_apb_ex",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "zones",
                    "clear_apb_ex"
                  ]
                }
              },
              "status": "Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Status",
                  "value": "400 Bad Request"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Security-Policy",
                  "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:* https://*:7001 https://*.openstreetmap.org;"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json;charset=UTF-8"
                },
                {
                  "key": "Content-Length",
                  "value": "120"
                },
                {
                  "key": "Date",
                  "value": "Tue, 09 Sep 2025 09:45:18 GMT"
                },
                {
                  "key": "Referrer-Policy",
                  "value": "no-referrer"
                }
              ],
              "cookie": [],
              "body": "{\n    \"Response\": {\n        \"code\": \"671\",\n        \"link\": \"https://support.supremainc.com/en/support/home\",\n        \"message\": \"Zone type mismatch.\"\n    }\n}"
            }
          ]
        },
        {
          "name": "Fire Alarm: Create",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Zone\": {\r\n        \"name\": \"FAZ5\",\r\n        \"description\": \"\",\r\n        \"zone_type\": \"1\",\r\n        \"is_global\": 1,\r\n        \"enable\": \"1\",\r\n        \"fire_alarm\": {\r\n            \"fire_alarm_inputs\": [\r\n                {\r\n                    \"device_id\": {\r\n                        \"id\": 547234951\r\n                    },\r\n                    \"input_index\": 0,\r\n                    \"type\": 0,\r\n                    \"duration\": \"1000\"\r\n                },\r\n                {\r\n                    \"device_id\": {\r\n                        \"id\": 547234968\r\n                    },\r\n                    \"input_index\": 1,\r\n                    \"type\": 0,\r\n                    \"duration\": \"1500\"\r\n                }\r\n            ],\r\n            \"doors\": [\r\n                {\r\n                    \"id\": 3\r\n                }\r\n            ],\r\n            \"alarm_actions\": [],\r\n            \"elevators\": [\r\n                {\r\n                    \"id\": 32769\r\n                }\r\n            ]\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones"
              ]
            },
            "description": "This API is used to create new Fire Alarm Zone.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Name of the Fire Alarm Zone |\n| description | String | N | Enter a fire alarm zone description. |\n| zone_type | Number | Y | View the zone type. |\n| is_global | Boolean | Y | You can set fire alarm in two different modes. Local mode will allow the master device and slave devices that are connected via RS-485 to be selected. Global mode will allow selection of all devices added to BioStar X. |\n| enable | Boolean | Y | Toggle to disable the fire alarm zone. |\n| device_id:id | Number | Y | Add and configure the device to set off the fire alarm signal.  <br>When Local is set for Mode, either Door or Elevator can be set as the fire zone.  <br>When Global is set for Mode, both Door and Elevator can be set as the fire zone at the same time. |\n| input_index | Number | Y | Input port of the device |\n| type | Boolean | Y | 0=Normally Open.  <br>1=Normally Closed. |\n| duration | Number | Y | Duration of the Alarm |\n| doors:id | Number | N | Select the door(s) to include in the fire alarm zone. |\n| elevators:id | Number | N | Select the elevators to include in the fire alarm zone. You can select multiple elevators. |\n| alarm_actions | Array | N | Choose the operation to be triggered when a fire alarm signal occurs. |"
          },
          "response": []
        },
        {
          "name": "Muster: Create",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Zone\": {\r\n        \"name\": \"testmuster11\",\r\n        \"zone_type\": 8,\r\n        \"is_global\": 1,\r\n        \"enable\": \"1\",\r\n        \"status\": \"64\",\r\n        \"muster\": {\r\n            \"access_groups\": [\r\n                {\r\n                    \"id\": \"1\"\r\n                }\r\n            ],\r\n            \"entry_devices\": [\r\n                {\r\n                    \"id\": \"731\"\r\n                }\r\n            ],\r\n            \"exit_devices\": [\r\n                {\r\n                    \"id\": \"729\"\r\n                }\r\n            ],\r\n            \"time_limit\": \"1200\",\r\n            \"alarm_actions\": []\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones"
              ]
            },
            "description": "The muster zone is used as a place where users gather when an emergency occurs. It can also be used for the purpose of monitoring the number of users and list of users in a specific area, or for notifying the manager of alarms and alerts when a user stays in a specific area for a long time.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a muster zone name. |\n| zone_type | Number | Y | View the zone type. |\n| is_global | Boolean | N | You can check the application range of the zone. Only Global mode is supported for muster zone, and the zone can be set with all devices added to BioStar X. |\n| enable | Boolean | N | Toggle to disable the muster zone. |\n| status | Number | N |  |\n| access_groups:id | Number | Y | Set the access group to which the user who will be staying in the muster zone. Up to 16 access groups can be set. |\n| entry_devices:id | Number | Y | Select a device to use for entry. |\n| exit_devices:id | Number | Y | Select a device to use at exit. |\n| time_limit | Number | Y | Set the maximum amount of time that user can stay in the zone. It can be set up to 4320 minutes, and an alarm occurs when the user stays in the muster zone exceeding the specified time. |\n| alarm_actions | Array | N | Set the alarm action to carry out when a specific event occurs at the muster zone. |"
          },
          "response": []
        },
        {
          "name": "Scheduled Lock: Create",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Zone\": {\r\n        \"name\": \"SLZ2\",\r\n        \"description\": \"\",\r\n        \"zone_type\": \"2\",\r\n        \"is_global\": 0,\r\n        \"enable\": \"1\",\r\n        \"status\": 0,\r\n        \"forced_lock\": {\r\n            \"bi_directional_lock\": 0,\r\n            \"schedule_id\": {\r\n                \"id\": \"2\"\r\n            },\r\n            \"doors\": [\r\n                {\r\n                    \"id\": 17\r\n                }\r\n            ],\r\n            \"bypass_groups\": [\r\n                {\r\n                    \"id\": 9\r\n                }\r\n            ]\r\n        },\r\n        \"alarm_actions\":[]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones"
              ]
            },
            "description": "You can configure the scheduled lock zone. The scheduled lock zone keeps the door locked based on the schedule that has been set.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a scheduled lock zone name. |\n| description | String | N | Enter a scheduled lock zone description. |\n| zone_type | Number | Y | View the zone type |\n| is_global | Boolean | Y | The scheduled lock zone only supports local mode (0). |\n| enable | Boolean | Y | Toggle to disable the scheduled lock zone. |\n| forced_lock:bi_directional_lock | Boolean | Y | 0=Exit allowed.  <br>1=Access not allowed.  <br>You can configure the zone to lock only the entering device, or to lock both entering and exiting device. |\n| forced_lock:schedule_id:id | Number | Y | Select a schedule.  <br>You can configure a scheduled lock zone by selecting multiple doors in local mode. |\n| forced_lock:doors:id | Number | Y | Select the door(s) to include in the scheduled lock zone. |\n| forced_lock:bypass_groups:id | Number | N | Select an access level. Users who have the access level will not be restricted by the scheduled lock rule. |\n| alarm_actions | Array | N | Select an access level. Users who have the access level will not be restricted by the scheduled lock rule. |"
          },
          "response": []
        },
        {
          "name": "Scheduled Unlock: Create (Door)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Zone\": {\r\n        \"name\": \"SUZ1\",\r\n        \"description\": \"\",\r\n        \"zone_type\": \"3\",\r\n        \"is_global\": 0,\r\n        \"enable\": \"1\",\r\n        \"status\": 0,\r\n        \"forced_unlock\": {\r\n            \"first_man_in\": 1,\r\n            \"schedule_id\": {\r\n                \"id\": \"2\"\r\n            },\r\n            \"doors\": [\r\n                {\r\n                    \"id\": 1\r\n                }\r\n            ],\r\n            \"alarm_actions\": [],\r\n            \"first_man_in_groups\": [\r\n                {\r\n                    \"id\": 4\r\n                }\r\n            ]\r\n        },\r\n        \"isLift\": false\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones"
              ]
            },
            "description": "You can configure the scheduled unlock zone. The scheduled unlock zone keeps the door open based on the schedule that has been set.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a scheduled unlock zone name. |\n| description | String | N | Enter a scheduled unlock zone description. |\n| zone_type | Number | Y | View the zone type. |\n| is_global | Boolean | Y | The scheduled unlock zone only supports local mode (0). |\n| enable | Boolean | Y | Toggle to disable the scheduled unlock zone. |\n| status | Number | N |  |\n| isLift | Boolean | Y | You can set doors or elevators as schedule unlock zones. |\n| first_man_in | Boolean | N | When set as Active (1), the user who belongs to the access group must authenticate in the configured schedule to start a schedule unlock.  <br>Inactive (2). |\n| schedule_id:id | Number | Y | Select a schedule. |\n| doors:id | Number | Y | If you select Door, the door list is activated. Select the door(s) to include in the scheduled unlock zone.  <br>You can configure a scheduled unlock zone by selecting multiple doors in local mode. |\n| first_man_in_groups:id | Number | N | You can select the access group where the user belongs who can start a scheduled unlock. |\n| alarm_actions | Array | N | Choose the operation to be triggered when a scheduled unlock signal occurs. |"
          },
          "response": []
        },
        {
          "name": "Scheduled Unlock: Create (Elevator)",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Zone\": {\r\n        \"name\": \"SUZ3\",\r\n        \"description\": \"\",\r\n        \"zone_type\": \"10\",\r\n        \"is_global\": 0,\r\n        \"enable\": \"1\",\r\n        \"status\": 0,\r\n        \"isLift\": true,\r\n        \"lift_unlock\": {\r\n            \"first_man_in\": 2,\r\n            \"schedule_id\": {\r\n                \"id\": \"3\"\r\n            },\r\n            \"lifts\": [\r\n                {\r\n                    \"id\": 32769,\r\n                    \"floors\": [\r\n                        {\r\n                            \"id\": 2\r\n                        },\r\n                        {\r\n                            \"id\": 3\r\n                        },\r\n                        {\r\n                            \"id\": 4\r\n                        }\r\n                    ],\r\n                    \"control_device_id\": {\r\n                        \"id\": 543408590\r\n                    }\r\n                }\r\n            ]\r\n        }\r\n    }\r\n}\r\n",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones"
              ]
            },
            "description": "You can configure the scheduled unlock zone. The scheduled unlock zone keeps the door open based on the schedule that has been set.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter a scheduled unlock zone name. |\n| description | String | N | Enter a scheduled unlock zone description. |\n| zone_type | Number | Y | View the zone type. |\n| is_global | Boolean | Y | The scheduled unlock zone only supports local mode (0). |\n| enable | Boolean | Y | Toggle to disable the scheduled unlock zone. |\n| status | Number | N |  |\n| isLift | Boolean | Y | You can set doors or elevators as schedule unlock zones. |\n| first_man_in | Boolean | N | When set as Active (1), the user who belongs to the access group must authenticate in the configured schedule to start a schedule unlock.  <br>Inactive (2). |\n| schedule_id:id | Number | Y | Select a schedule. |\n| doors:id | Number | Y | If you select Door, the door list is activated. Select the door(s) to include in the scheduled unlock zone.  <br>You can configure a scheduled unlock zone by selecting multiple doors in local mode. |\n| lifts:id | Number | Y | If you select Elevator, the elevator list is activated. Select the elevators to include in the scheduled unlock zone. You can select multiple elevators. |\n| lifts:floors:id | Number | Y | You can select the floor of the selected elevator. |\n| lifts:control_device_id:id | Number | Y | Input the elevator control device id. |\n| first_man_in_groups:id | Number | N | You can select the access group where the user belongs who can start a scheduled unlock. |\n| alarm_actions | Array | N | Choose the operation to be triggered when a scheduled unlock signal occurs. |"
          },
          "response": []
        },
        {
          "name": "Intrusion: Create",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Zone\": {\r\n        \"name\": \"INT1\",\r\n        \"description\": \"\",\r\n        \"zone_type\": 6,\r\n        \"is_global\": 0,\r\n        \"enable\": \"1\",\r\n        \"status\": \"0\",\r\n        \"intrusion_alarm\": {\r\n            \"arm_delay\": \"1\",\r\n            \"disarm_delay\": \"2\",\r\n            \"doors\": [\r\n                {\r\n                    \"id\": 32\r\n                }\r\n            ],\r\n            \"access_groups\": [\r\n                {\r\n                    \"id\": 24\r\n                }\r\n            ],\r\n            \"cards\": [\r\n                {\r\n                    \"id\": \"10034\"\r\n                }\r\n            ],\r\n            \"arm_inputs\": [\r\n                {\r\n                    \"device\": {\r\n                        \"id\": 544140034\r\n                    },\r\n                    \"arm_type\": \"arm\",\r\n                    \"input_type\": \"card\"\r\n                },\r\n                {\r\n                    \"device\": {\r\n                        \"id\": \"544140034\"\r\n                    },\r\n                    \"input_index\": \"0\",\r\n                    \"duration\": \"200\",\r\n                    \"normal_open\": \"1\",\r\n                    \"arm_type\": \"toggle\",\r\n                    \"input_type\": \"input\"\r\n                }\r\n            ],\r\n            \"intrusion_inputs\": [\r\n                {\r\n                    \"device\": {\r\n                        \"id\": \"544140034\"\r\n                    },\r\n                    \"input_index\": \"1\",\r\n                    \"duration\": \"300\",\r\n                    \"normal_open\": \"1\",\r\n                    \"input_type\": \"input\"\r\n                }\r\n            ],\r\n            \"intrusion_actions\": []\r\n        }\r\n    }\r\n}\r\n",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones"
              ]
            },
            "description": "When intrusion alarm zone is used, you can detect trespassing of an unauthorized user to a designated zone without permission.\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter an intrusion alarm zone name. |\n| description | String | N | Enter an intrusion alarm zone description. |\n| zone_type | Number | Y | Input the zone type. |\n| is_global | Boolean | Y | Application range of the zone. Only Local mode is supported for intrusion alarm zone, and the zone can be set only with devices connected to the entry device and RS-485. |\n| enable | Boolean | N | Toggle to disable the intrusion alarm zone. |\n| status | Number | N |  |\n| arm_delay | Number | Y | Delay time from the authentication to the arm |\n| disarm_delay | Number | Y | Delay time from the intrusion detection to the alarm occurs. |\n| doors:id | Number | Y | Select the doors to include in the intrusion alarm zone. |\n| access_groups:id | Number | N | You can add an access group with permission to arm or disarm. You can register up to 128 access groups. |\n| cards:id | Number | Y | You can add a card with permission to arm or disarm. You can register up to 128 access cards. |\n| arm_inputs:device:id | Number | Y | You can set the arming and disarming by device or input signal.  <br>Select a device to control the intrusion alarm zone among the entry and exit devices of the door |\n| arm_inputs:arm_type | String | Y | Option: arm, disarm, toggle |\n| arm_inputs:input_type | String | Y | Option: card, input |\n| arm_inputs:input_index | Number | Y | Input port of the selected device. |\n| arm_inputs:duration | Number | Y | Duration which the device sensor connected to arm/disarm. |\n| arm_inputs:normal_open | Boolean | Y | Default door status |\n| intrusion_inputs:device:id | Number | Y | Select a device to control the intrusion alarm zone among the entry and exit devices of the door |\n| intrusion_inputs:input_index | Number | Y | Input port of the selected device. |\n| intrusion_inputs:duration | Number | Y | The device recognizes intrusion if N/O sensor connected to input port n for the set duration. |\n| intrusion_inputs:normal_open | Boolean | Y | Default Door status |\n| intrusion_inputs:input_type | String | Y | input |\n| intrusion_actions | Array | N | Set the alarm action to carry out when a specific event occurs at the intrusion alarm zone. |\n\n#### Notes:\n\n- `arm_inputs`, `intrusion_inputs`, `intrusion_actions` is activated only when Door is set from Configuration."
          },
          "response": []
        },
        {
          "name": "Interlock: Create",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Zone\": {\r\n        \"name\": \"IN1\",\r\n        \"description\": \"\",\r\n        \"zone_type\": 7,\r\n        \"is_global\": 0,\r\n        \"enable\": \"1\",\r\n        \"inter_lock\": {\r\n            \"doors\": [\r\n                {\r\n                    \"id\": \"2\"\r\n                },\r\n                {\r\n                    \"id\": \"3\"\r\n                }\r\n            ],\r\n            \"sensor_inputs\": [\r\n                {\r\n                    \"device\": {\r\n                        \"id\": \"546091003\"\r\n                    },\r\n                    \"input_index\": \"0\",\r\n                    \"duration\": \"300\",\r\n                    \"normal_open\": 0,\r\n                    \"input_type\": \"input\"\r\n                }\r\n            ],\r\n            \"alarm_actions\": [\r\n                {\r\n                    \"input_event_id\": 41472,\r\n                    \"output_type\": \"3\",\r\n                    \"output_device_id\": {\r\n                        \"id\": \"546091003\",\r\n                        \"buzzer\": true\r\n                    },\r\n                    \"output_buzzer_volume\": \"1\"\r\n                }\r\n            ]\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones"
              ]
            },
            "description": "Interlock zone monitors the status of two or more doors by door sensor and relay state to control that one door cannot be opened or close if other doors are open or unlocked. You can also disable access if a user stays within the zone.\n\n- An interlock zone can be configured with up to 4 doors.\n    \n- An interlock zone can only set the doors with the devices connected to the CoreStation.\n    \n- A device set as an interlock zone cannot be set to another zone.\n    \n- A door set as an interlock zone cannot be set to another zone other than the fire alarm zone.\n    \n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| name | String | Y | Enter an interlock zone name. |\n| description | String | N | Enter an interlock zone description. |\n| zone_type | Number | Y | View the zone type. |\n| is_global | Number | Y | You can check the application range of the zone. Only Local mode is supported for interlock zone, and the zone can be set only with devices connected to the CoreStation and RS-485. |\n| enable | Number | Y | You can disable the interlock zone. input 1 to enable it. |\n| inter_lock:doors:id | Number | Y | Select the doors to include in the interlock zone. You must select at least two doors that are the door sensor is connected. |\n| sensor_inputs:device:id | Number | Y | If a user stays in the zone, this option can prevent others from entering the zone. Input the device ID which will be used as sensor. |\n| sensor_inputs:input_index | Number | Y | Index of the sensor which will be used. |\n| sensor_inputs:duration | Number | Y | Set the duration. |\n| sensor_inputs:normal_open | Number | Y | Set status between Normally Open or Closed. |\n| sensor_inputs:input_type | String | Y | Type of the input. |\n| alarm_actions | Array | N | Set the alarm action to carry out when a specific event occurs at the interlock zone. |"
          },
          "response": []
        },
        {
          "name": "Zones: Update",
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Zone\": {\r\n        \"name\": \"testmuster1\",\r\n        \"zone_type\": 8,\r\n        \"is_global\": 1,\r\n        \"enable\": \"1\",\r\n        \"status\": \"64\",\r\n        \"muster\": {\r\n            \"access_groups\": [\r\n                {\r\n                    \"id\": \"1\"\r\n                }\r\n            ],\r\n            \"entry_devices\": [\r\n                {\r\n                    \"id\": \"731\"\r\n                }\r\n            ],\r\n            \"exit_devices\": [\r\n                {\r\n                    \"id\": \"729\"\r\n                }\r\n            ],\r\n            \"time_limit\": \"1200\",\r\n            \"alarm_actions\": []\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/zones/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": null,
                  "description": "ID of the Zone which will be updated."
                }
              ]
            },
            "description": "This API is used to update a Zone."
          },
          "response": []
        },
        {
          "name": "Zones: Delete",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/zones/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "32786",
                  "description": "ID of the zone which will be deleted."
                }
              ]
            },
            "description": "This API is used to delete a Zone."
          },
          "response": []
        },
        {
          "name": "View Zones",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/zones",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "description": "Limit the number of responses by n records.",
                  "disabled": true
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Offset the responses by n records.",
                  "disabled": true
                },
                {
                  "key": "group_id",
                  "value": "4",
                  "description": "Limit the responses according to the zone_type. Leave empty for show all.\n0=Anti Passback, 1=Fire Alarm, 2=Scheduled Lock, 3=Scheduled Unlock - Door, 6=Intrusion, 7=Interlock, 8=Muster, 10=Scheduled Unlock - Elevator, 11=Occupancy",
                  "disabled": true
                }
              ]
            },
            "description": "This API is used to view zones."
          },
          "response": []
        },
        {
          "name": "View a Zone Detail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/zones/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "zones",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "32787",
                  "description": "ID of the zone which will be viewed."
                }
              ]
            },
            "description": "This API is used to view a zone detailed information."
          },
          "response": []
        }
      ]
    },
    {
      "name": "SbS: Event Log",
      "item": [
        {
          "name": "Step 1 Login",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "//put response's bs-session-id value to collection variable bsid\r",
                  "pm.test(\"Status code is 200\", function () {\r",
                  "    pm.response.to.have.status(200);\r",
                  "});\r",
                  "\r",
                  "if(pm.response.to.have.status(200)) {\r",
                  "    let params = pm.response.headers.get('bs-session-id');\r",
                  "    pm.collectionVariables.set(\"bsid\", params);\r",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"login_id\": \"admin\",\r\n        \"password\": \"admin1234!\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/login",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "login"
              ]
            },
            "description": "In order to view event log through Suprema BioStar X API, you will need a Session ID which will be available after you’re logged in.\n\nTo log in, make a form encoded server side POST request as shown on example below.\n\n`POST /api/login`\n\n`Host: server_ip|domain_name[:port]`\n\n`{“User”: {“login_id”: “user_login_id_here”, “password”: “password_here”}}`\n\nThe parameters are:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| login_id | String | Y | Your login ID |\n| password | String | Y | Your password |\n\nIf successful, you will receive back the following response:\n\n``` json\nStatus: 200 OK\nbs-session-id: c52127fea7f645149083d04d89ad68e5\nContent-Type: application/json;charset=UTF-8\n{\"User\":{\"user_id\":\"1\",\"name\":\"Administrator\",\"gender\":\"1\",\"email\":\"admin111@gmail.com\",\"birthday\":\"1977-10-08T04:00:00.00Z\",\"photo_exists\":\"false\",\"pin_exists\":\"false\",\"login_id\":\"admin\",\"password_exists\":\"true\",\"updated_count\":\"15\",\"last_modified\":\"946\",\"idx_last_modified\":\"263\",\"start_datetime\":\"2001-01-01T00:00:00.00Z\",\"expiry_datetime\":\"2030-12-31T23:59:00.00Z\",\"security_level\":\"0\",\"display_duration\":\"20\",\"display_count\":\"3\",\"permission\":{\"id\":\"1\",\"name\":\"Administrator\",\"description\":\"this is a permission for Administrator\",\"filter\":{\"UserGroup\":[\"1\"],\"DeviceGroup\":[\"1\"],\"DoorGroup\":[\"1\"],\"ElevatorGroup\":[\"1\"],\"ZoneType\":[\"-1\"],\"AccessGroup\":[\"0\"],\"GraphicMapGroup\":[\"1\"]},\"module\":{\"Dashboard\":{\"read\":\"true\",\"write\":\"true\"},\"User\":{\"read\":\"true\",\"write\":\"true\"},\"Device\":{\"read\":\"true\",\"write\":\"true\"},\"Door\":{\"read\":\"true\",\"write\":\"true\"},\"Elevator\":{\"read\":\"true\",\"write\":\"true\"},\"Zone\":{\"read\":\"true\",\"write\":\"true\"},\"AccessControl\":{\"read\":\"true\",\"write\":\"true\"},\"Monitoring\":{\"read\":\"true\",\"write\":\"true\"},\"TA\":{\"read\":\"true\",\"write\":\"true\"},\"Setting\":{\"read\":\"true\",\"write\":\"true\"},\"Video\":{\"read\":\"true\",\"write\":\"true\"},\"Visitor\":{\"read\":\"true\",\"write\":\"true\"}},\"device\":{\"id\":\"542071155\",\"id\":\"543720368\",\"id\":\"939257394\"},\"user\":{\"id\":\"1\",\"id\":\"2\",\"id\":\"3\",\"id\":\"4\",\"id\":\"5\",\"id\":\"6\",\"id\":\"7\",\"id\":\"20\",\"id\":\"21\",\"id\":\"22\",\"id\":\"23\",\"id\":\"24\",\"id\":\"25\",\"id\":\"26\",\"id\":\"27\",\"id\":\"28\",\"id\":\"29\",\"id\":\"30\",\"id\":\"31\",\"id\":\"32\",\"id\":\"33\"}},\"inherited\":\"false\",\"user_group_id\":{\"id\":\"1\",\"name\":\"All Users\"},\"disabled\":\"false\",\"expired\":\"false\",\"department\":\"department 12\",\"user_title\":\"title\",\"idx_user_id\":\"1001\",\"idx_user_id_num\":\"1001\",\"idx_name\":\"2001\",\"idx_phone\":\"1001\",\"idx_email\":\"5001\",\"fingerprint_template_count\":\"0\",\"face_count\":\"0\",\"card_count\":\"0\",\"access_groups\":[{\"id\":\"1\",\"name\":\"Meeting Room 1 AG\"},{\"id\":\"2\",\"name\":\"Meeting Room 2 AG\"},{\"id\":\"22\",\"name\":\"Building Access\"}],\"user_custom_fields\":[{\"user_id\":{\"user_id\":\"1\",\"name\":\"Administrator\"},\"custom_field\":{\"id\":\"1\",\"name\":\"Test\",\"type\":\"0\",\"order\":\"1\"}},{\"user_id\":{\"user_id\":\"1\",\"name\":\"Administrator\"},\"custom_field\":{\"id\":\"2\",\"name\":\"33\",\"type\":\"0\",\"order\":\"2\"}}],\"need_to_update_pw\":\"false\"},\"Response\":{\"code\":\"0\",\"link\":\"https:\\/\\/support.supremainc.com\\/en\\/support\\/home\",\"message\":\"Success\"}}\n\n```\n\nThere will be a key called bs-session-id, which is a consecutive strings of hex digits located on the header of the response:  \n`bs-session-id: 643f64efb7114485a2fd89de17ca13fb`\n\nThis value will be used as authorization of the APIs that will be called. To apply this value, put it on the header of the API that will be called with key name `bs-session-id`."
          },
          "response": []
        },
        {
          "name": "Step 2 Search Events",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"limit\": 20,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"datetime\",\r\n                \"operator\": 3,\r\n                \"values\": [\r\n                    \"2022-03-10T15:00:00.000Z\",\r\n                    \"2022-03-31T16:59:59.000Z\"\r\n                ]\r\n            },\r\n            {\r\n                \"column\": \"device_id\",\r\n                \"operator\": 1,\r\n                \"values\": [\r\n                    \"543308153\"\r\n                ]\r\n            },\r\n            {\r\n                \"column\": \"id\",\r\n                \"operator\": 0,\r\n                \"values\": [\r\n                    \"394\"\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"datetime\",\r\n                \"descending\": false\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/events/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "events",
                "search"
              ]
            },
            "description": "After logging in, you can use this API to view event log(s).\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| limit | Number | N | Limit the response records by the value stated on this parameter |\n| conditions:column | String |  | Field which the conditions will be based from |\n| conditions:operator | Number |  | Condition Operator  <br>EQUAL : 0,  <br>NOT_EQUAL : 1,  <br>CONTAINS : 2,  <br>BETWEEN : 3,  <br>LIKE : 4,  <br>GREATER : 5,  <br>LESS : 6 |\n| conditions:values | Datetime |  | Value of the conditions |\n| orders:column | String |  | Field which the sorting will be based on |\n| orders:descending | Boolean |  | Toggle true to set the sorting as descending |\n\nThere are two main components on this API: conditions and orders.\n\nOn conditions, you can put multiple criteria to filter the API response according to your need.\n\nWhile on orders, it is used to sort the response according to specified parameter, either ascending or descending.\n\nOn this example, there are three criteria on the conditions component:\n\n- First criteria filter the response according to datetime parameter (column: datetime) with date range between (operator: 3) value specified on values: \\[\\].\n    \n- Second criteria filter the response to show event log where the device id (column: device_id) is not (operator: 1) as specified (values \\[\\]).\n    \n- Third criteria filter the response to show event logs which have the specified value (values \\[\\]) as its id (column:id, operator: 0).\n    \n- The relation between multiple criteria on a single API call is AND.\n    \n\nFor the orders component on this example, it will sort the response according to parameter datetime (column: datetime) ascending (descending: false).\n\nDo note that the datetime that is shown on the response is based on UTC-0, so if you want to view event log from a device which use UTC+8, then you need to convert the datetime from UTC+8 to UTC-0 and use the conversion result as criteria value on the conditions.\n\n##### Example:\n\n- Device: UTC+8. Event log occurred when datetime on the device is 2022-06-02 01:37\n    \n- Convert the datetime to UTC-0 : 2022-06-01 17:37\n    \n- Use this converted value as criteria value on the condition"
          },
          "response": []
        },
        {
          "name": "Search Events Example",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"Query\": {\r\n        \"limit\": 5,\r\n        \"conditions\": [\r\n            {\r\n                \"column\": \"datetime\",\r\n                \"operator\": 3,\r\n                \"values\": [\r\n                    \"2022-05-31T16:05:00.000Z\",\r\n                    \"2022-06-30T15:58:00.000Z\"\r\n                ]\r\n            },\r\n            {\r\n                \"column\": \"device_id\",\r\n                \"operator\": 0,\r\n                \"values\": [\r\n                    \"543308153\"\r\n                ]\r\n            }\r\n        ],\r\n        \"orders\": [\r\n            {\r\n                \"column\": \"datetime\",\r\n                \"descending\": true\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/events/search",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "events",
                "search"
              ]
            },
            "description": "This example shows how to view event log from device with id: 543308153 (device timezone set as UTC+8) and log with datetime between 2022-06-01 00:05 to 2022-06-30 23:58.\n\nNote that the datetime used on the API criteria is different from what the user would like to see. This is because the device was set to use UTC+8, so to view the correct log, use datetime which have been converted to UTC-0."
          },
          "response": []
        },
        {
          "name": "View Event Types Example",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/event_types?is_break_glass=false&setting_alert=false&setting_all=true",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "event_types"
              ],
              "query": [
                {
                  "key": "is_break_glass",
                  "value": "false",
                  "description": "?"
                },
                {
                  "key": "setting_alert",
                  "value": "false",
                  "description": "Toggle true to list events which will trigger alert. Marked by 'alertable' parameter on the event. 'enable_alert' is used for marking which event will show a pop up notice on Bio Star 2."
                },
                {
                  "key": "setting_all",
                  "value": "true",
                  "description": "Toggle true to list all events recorded on database."
                }
              ]
            },
            "description": "This API is used for listing event types recorded on BioStar X."
          },
          "response": [
            {
              "name": "View Event Types Example",
              "originalRequest": {
                "method": "GET",
                "header": [],
                "url": {
                  "raw": "{{baseUrl}}/api/event_types?is_break_glass=false&setting_alert=false&setting_all=true",
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "path": [
                    "api",
                    "event_types"
                  ],
                  "query": [
                    {
                      "key": "is_break_glass",
                      "value": "false",
                      "description": "?"
                    },
                    {
                      "key": "setting_alert",
                      "value": "false",
                      "description": "Toggle true to list events which will trigger alert. Marked by 'alertable' parameter on the event. 'enable_alert' is used for marking which event will show a pop up notice on Bio Star 2."
                    },
                    {
                      "key": "setting_all",
                      "value": "true",
                      "description": "Toggle true to list all events recorded on database."
                    }
                  ]
                }
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": null,
              "header": [
                {
                  "key": "Status",
                  "value": "200 OK"
                },
                {
                  "key": "X-Content-Type-Options",
                  "value": "nosniff"
                },
                {
                  "key": "X-XSS-Protection",
                  "value": "1"
                },
                {
                  "key": "Cache-Control",
                  "value": "no-cache, no-store, max-age=0, must-revalidate"
                },
                {
                  "key": "Pragma",
                  "value": "no-cache"
                },
                {
                  "key": "Expires",
                  "value": "0"
                },
                {
                  "key": "Strict-Transport-Security",
                  "value": "max-age=31536000 ; includeSubDomains"
                },
                {
                  "key": "X-Frame-Options",
                  "value": "SAMEORIGIN"
                },
                {
                  "key": "Content-Security-Policy",
                  "value": "default-src 'self' *.biostar2.com:* localhost:* 127.0.0.1:* blob: data: filesystem: mediastream:;script-src 'self' https://*.biostar2.com https://cdn.jsdelivr.net 'unsafe-inline' 'unsafe-eval';style-src 'self' https://*.biostar2.com 'unsafe-inline';worker-src 'self' blob:;img-src 'self' blob: https://*.openstreetmap.org data:;connect-src 'self' localhost:*  https://*.openstreetmap.org;"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json;charset=UTF-8"
                },
                {
                  "key": "Content-Length",
                  "value": "42454"
                },
                {
                  "key": "Date",
                  "value": "Thu, 30 Oct 2025 06:25:01 GMT"
                },
                {
                  "key": "Referrer-Policy",
                  "value": "no-referrer"
                }
              ],
              "cookie": [],
              "body": "{\n  \"EventTypeCollection\": {\n    \"total\": \"7\",\n    \"rows\": [\n      {\n        \"code\": \"4001\",\n        \"name\": \"MAXIMUM_INVALID_LOGIN_ATTEMPTS\",\n        \"description\": \"MAXIMUM_INVALID_LOGIN_ATTEMPTS\",\n        \"alertable\": \"true\",\n        \"enable_alert\": \"true\"\n      },\n      {\n        \"code\": \"4088\",\n        \"name\": \"ACCESS_GRANTED\",\n        \"description\": \"EVENT_CODE_ACCESS_GRANTED\",\n        \"alertable\": \"false\",\n        \"enable_alert\": \"false\"\n      },\n      {\n        \"code\": \"4095\",\n        \"name\": \"DEVICE_DISCONNECT\",\n        \"description\": \"DEVICE NETWORK DISCONNECTED\",\n        \"alertable\": \"true\",\n        \"enable_alert\": \"false\"\n      },\n      {\n        \"code\": \"4096\",\n        \"name\": \"VERIFY_SUCCESS\",\n        \"description\": \"Succeed to verify user\",\n        \"alertable\": \"false\",\n        \"enable_alert\": \"false\"\n      },\n      {\n        \"code\": \"4352\",\n        \"name\": \"VERIFY_FAIL\",\n        \"description\": \"Fail to verify user\",\n        \"alertable\": \"true\",\n        \"enable_alert\": \"false\"\n      },\n      {\n        \"code\": \"6400\",\n        \"name\": \"ACCESS_DENIED\",\n        \"description\": \"User is authenticated, but denied by access rules\",\n        \"alertable\": \"false\",\n        \"enable_alert\": \"false\"\n      },\n      {\n        \"code\": \"8192\",\n        \"name\": \"ENROLL_SUCCESS\",\n        \"description\": \"Succeed to enroll user\",\n        \"alertable\": \"false\",\n        \"enable_alert\": \"false\"\n      }\n    ]\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "SbS: Create User",
      "item": [
        {
          "name": "Step 1 Login",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "//put response's bs-session-id value to collection variable bsid\r",
                  "pm.test(\"Status code is 200\", function () {\r",
                  "    pm.response.to.have.status(200);\r",
                  "});\r",
                  "\r",
                  "if(pm.response.to.have.status(200)) {\r",
                  "    let params = pm.response.headers.get('bs-session-id');\r",
                  "    pm.collectionVariables.set(\"bsid\", params);\r",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"login_id\": \"admin\",\r\n        \"password\": \"admin1234!\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/login",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "login"
              ]
            },
            "description": "In order to create User through Suprema BioStar X API, you will need a Session ID which will be available after you’re logged in.\n\nTo log in, make a form encoded server side POST request as shown on example below.\n\n`POST /api/login`\n\n`Host: server_ip|domain_name[:port]`\n\n`{“User”: {“login_id”: “user_login_id_here”, “password”: “password_here”}}`\n\nThe parameters are:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| login_id | String | Y | Your login ID |\n| password | String | Y | Your password |\n\nIf successful, you will receive back the following response:\n\n``` json\nStatus: 200 OK\nbs-session-id: c52127fea7f645149083d04d89ad68e5\nContent-Type: application/json;charset=UTF-8\n{\"User\":{\"user_id\":\"1\",\"name\":\"Administrator\",\"gender\":\"1\",\"email\":\"admin111@gmail.com\",\"birthday\":\"1977-10-08T04:00:00.00Z\",\"photo_exists\":\"false\",\"pin_exists\":\"false\",\"login_id\":\"admin\",\"password_exists\":\"true\",\"updated_count\":\"15\",\"last_modified\":\"946\",\"idx_last_modified\":\"263\",\"start_datetime\":\"2001-01-01T00:00:00.00Z\",\"expiry_datetime\":\"2030-12-31T23:59:00.00Z\",\"security_level\":\"0\",\"display_duration\":\"20\",\"display_count\":\"3\",\"permission\":{\"id\":\"1\",\"name\":\"Administrator\",\"description\":\"this is a permission for Administrator\",\"filter\":{\"UserGroup\":[\"1\"],\"DeviceGroup\":[\"1\"],\"DoorGroup\":[\"1\"],\"ElevatorGroup\":[\"1\"],\"ZoneType\":[\"-1\"],\"AccessGroup\":[\"0\"],\"GraphicMapGroup\":[\"1\"]},\"module\":{\"Dashboard\":{\"read\":\"true\",\"write\":\"true\"},\"User\":{\"read\":\"true\",\"write\":\"true\"},\"Device\":{\"read\":\"true\",\"write\":\"true\"},\"Door\":{\"read\":\"true\",\"write\":\"true\"},\"Elevator\":{\"read\":\"true\",\"write\":\"true\"},\"Zone\":{\"read\":\"true\",\"write\":\"true\"},\"AccessControl\":{\"read\":\"true\",\"write\":\"true\"},\"Monitoring\":{\"read\":\"true\",\"write\":\"true\"},\"TA\":{\"read\":\"true\",\"write\":\"true\"},\"Setting\":{\"read\":\"true\",\"write\":\"true\"},\"Video\":{\"read\":\"true\",\"write\":\"true\"},\"Visitor\":{\"read\":\"true\",\"write\":\"true\"}},\"device\":{\"id\":\"542071155\",\"id\":\"543720368\",\"id\":\"939257394\"},\"user\":{\"id\":\"1\",\"id\":\"2\",\"id\":\"3\",\"id\":\"4\",\"id\":\"5\",\"id\":\"6\",\"id\":\"7\",\"id\":\"20\",\"id\":\"21\",\"id\":\"22\",\"id\":\"23\",\"id\":\"24\",\"id\":\"25\",\"id\":\"26\",\"id\":\"27\",\"id\":\"28\",\"id\":\"29\",\"id\":\"30\",\"id\":\"31\",\"id\":\"32\",\"id\":\"33\"}},\"inherited\":\"false\",\"user_group_id\":{\"id\":\"1\",\"name\":\"All Users\"},\"disabled\":\"false\",\"expired\":\"false\",\"department\":\"department 12\",\"user_title\":\"title\",\"idx_user_id\":\"1001\",\"idx_user_id_num\":\"1001\",\"idx_name\":\"2001\",\"idx_phone\":\"1001\",\"idx_email\":\"5001\",\"fingerprint_template_count\":\"0\",\"face_count\":\"0\",\"card_count\":\"0\",\"access_groups\":[{\"id\":\"1\",\"name\":\"Meeting Room 1 AG\"},{\"id\":\"2\",\"name\":\"Meeting Room 2 AG\"},{\"id\":\"22\",\"name\":\"Building Access\"}],\"user_custom_fields\":[{\"user_id\":{\"user_id\":\"1\",\"name\":\"Administrator\"},\"custom_field\":{\"id\":\"1\",\"name\":\"Test\",\"type\":\"0\",\"order\":\"1\"}},{\"user_id\":{\"user_id\":\"1\",\"name\":\"Administrator\"},\"custom_field\":{\"id\":\"2\",\"name\":\"33\",\"type\":\"0\",\"order\":\"2\"}}],\"need_to_update_pw\":\"false\"},\"Response\":{\"code\":\"0\",\"link\":\"https:\\/\\/support.supremainc.com\\/en\\/support\\/home\",\"message\":\"Success\"}}\n\n```\n\nThere will be a key called bs-session-id, which is a consecutive strings of hex digits located on the header of the response:  \n`bs-session-id: 643f64efb7114485a2fd89de17ca13fb`\n\nThis value will be used as authorization of the APIs that will be called. To apply this value, put it on the header of the API that will be called with key name `bs-session-id`."
          },
          "response": []
        },
        {
          "name": "Step 2 View BioStar Settings",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/setting/biostar",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "setting",
                "biostar"
              ]
            },
            "description": "After logged in, use this API to view the User ID setting of the BioStar X, is it AlphaNumeric or Number.\n\nIt can be seen on parameter **use_alphanumeric**, if the value is false then the current setting for User ID is Number, else it's AlphaNumeric."
          },
          "response": []
        },
        {
          "name": "Step 3 Find Next Available UserID",
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "const jsonData = pm.response.json();\r",
                  "pm.collectionVariables.set(\"nuid\", jsonData.User.user_id);"
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/users/next_user_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                "next_user_id"
              ]
            },
            "description": "After User ID setting of BioStar X is confirmed, use this API to get the next `user_id` for new user.\n\nThis API will only shows next available ID in number format.\n\nKeep this ID for input on `user_id` parameter when creating new user."
          },
          "response": []
        },
        {
          "name": "Step 4a Enroll Card Credential",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/scan_card",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "scan_card"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "543720368",
                  "description": "ID of the device which will be used for enrollment"
                }
              ]
            },
            "description": "Next step on creating a new user it to enroll the credential that the user will be using. Either it's Card, Face, Visual Face or Fingerprint.\n\nThis API is used to enroll card credential using the specified device.\n\nKeep the card_id value on the response which shows after running this API to apply it to the user which will be created.\n\nTo view device(s) with capability to enroll a card, use `View Device(s) Based on Enrollment Type` API."
          },
          "response": []
        },
        {
          "name": "Step 4b Enroll Face Credential",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/devices/:id/credentials/face?pose_sensitivity=4",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":id",
                "credentials",
                "face"
              ],
              "query": [
                {
                  "key": "pose_sensitivity",
                  "value": "4",
                  "description": "Set the sensitivity for the position, angle, and distance of a face when registering the face. Set the sensitivity high if you wish to obtain a detailed face template. 0-9"
                }
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "543408590",
                  "description": "ID of the device which will be used to enroll"
                }
              ]
            },
            "description": "Use this API to enroll face credential from a device.\n\nSet the pose_sensitivity to 0 if you're doing a Visual Face scan.\n\nKeep the response of this API after running to apply it to the user which will be created.\n\nTo view device(s) with capability to enroll Face/Visual Face, use `View Device(s) Based on Enrollment Type` API."
          },
          "response": []
        },
        {
          "name": "Step 4c Enroll Fingerprint",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"ScanFingerprintOption\": {\r\n        \"enroll_quality\": \"80\",\r\n        \"raw_image\": false\r\n    },\r\n    \"noblockui\": true\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/devices/:dev_id/scan_fingerprint",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "devices",
                ":dev_id",
                "scan_fingerprint"
              ],
              "variable": [
                {
                  "key": "dev_id",
                  "value": "544140034"
                }
              ]
            },
            "description": "Use this API to scan a fingerprint.\n\nOn calling this API, it is required to specify the device which will be used as fingerprint scanner. It is done by specifying Device ID on the API Path, which marked by :dev_id.\n\nThe procedure to add a fingerprint as follows:  \n\\- Scan a finger using this API  \n\\- Use `POST /api/server_matching/identify_finger` to check if it's already exist  \n\\- If it's not exist, then run a second scan using this API for the same finger  \n\\- Compare 1st and 2nd scan result using `POST /api/devices/:dev_id/verify_fingerprint` to make sure that 1st and 2nd scan are the same finger  \n\\- After running `Verify Fingerprint Scan`, keep the value of template 0 and 1 to assign the enrolled finger to a user using `POST|PUT /api/users/:id`\n\n#### BODY Parameters:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| ScanFingerprintOption |  |  |  |\n| :enroll_quality | Number | Y | Set a fingerprint enrollment quality level. Any fingerprint which does not meet the quality requirement will not be enrolled. |\n| :raw_image | Boolean | Y | Set this option to view the original image when a fingerprint is scanned. |\n| noblockui | Boolean | Y |  |"
          },
          "response": []
        },
        {
          "name": "Step 5 Create New User",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  "const postRequest = {\r",
                  "  url: pm.collectionVariables.get('baseUrl')+\"/api/users/next_user_id\",\r",
                  "  method: 'GET',\r",
                  "  header: {\r",
                  "    'bs-session-id': pm.collectionVariables.get('bsid')\r",
                  "  },\r",
                  "};\r",
                  "\r",
                  "pm.sendRequest(postRequest, (error, res) => {\r",
                  "  console.log(error ? error : res.json());\r",
                  "  const jsonData = res.json();\r",
                  "  pm.collectionVariables.set(\"nuid\", jsonData.User.user_id);\r",
                  "});"
                ],
                "type": "text/javascript"
              }
            },
            {
              "listen": "test",
              "script": {
                "exec": [
                  "//Loop Request nLoop times\r",
                  "/*\r",
                  "pm.environment.set(\"nLoop\", 10);\r",
                  "var currentCount = pm.environment.get(\"nLoop\")\r",
                  "if (currentCount > 0){\r",
                  " currentCount = currentCount -1 ;\r",
                  " pm.environment.set(\"nLoop\", currentCount);\r",
                  " postman.setNextRequest(\"Create New User\");\r",
                  "}*/\r",
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"user_id\": \"{{nuid}}\",\r\n        \"user_group_id\": {\r\n            \"id\": \"1\"\r\n        },\r\n        \"start_datetime\": \"2001-01-01T00:00:00.00Z\",\r\n        \"expiry_datetime\": \"2030-12-31T23:59:00.00Z\",\r\n        \"disabled\": \"\",\r\n        \"name\": \"{{nuid}}{{$randomFirstName}}\",\r\n        \"email\": \"{{nuid}}{{$randomEmail}}\",\r\n        \"department\": \"\",\r\n        \"title\": \"\",\r\n        \"photo\": \"\",\r\n        \"phone\": \"\",\r\n        \"permission\": {\r\n            \"id\": \"1\"\r\n        },\r\n        \"access_groups\": {\r\n            \"id\": \"\"\r\n        },\r\n        \"login_id\": \"{{nuid}}\",\r\n        \"password\": \"{{$randomPassword}}\",\r\n        \"user_ip\": \"{{$randomIP}}\"\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users"
              ]
            },
            "description": "After preparing available user_id and credential(s), use this API to create a new user using the basic configuration.\n\nFor applying configuration beyond this, such as credential(s) or custom fields, refer to the subsequent example.\n\n#### BODY Parameters:\n\n| **Parameters** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| user_id | String | Y | ID of the User. Unique.  <br>  <br>When User ID Type in Setting > Server is set to Number, a number between 1 and 4294967295 can be entered. When Alphanumeric is set, a combination of alphabetic characters and numbers can be entered.  <br>Do not use spaces when entering ID.  <br>Numbers or Alphanumeric characters can be set for user_id. For more details, refer to Setting Section of this documentation. |\n| name | String | N | Name of the user. Up to 48 characters. |\n| user_group_id | Number | Y | ID of the User Group that the user will be under. Refer to User Group Section of this documentation for listing available User Groups. |\n| disabled | Boolean | N | Toggle User active or not; false for active, true for non-active. |\n| start_datetime | Date/Time | Y | Start active period for the User. |\n| expiry_datetime | Date/Time | Y | End active period for the User. |\n| email | String | N | Email address of the User. |\n| department | String | N | Department of the User. Up to 64 characters. |\n| title | String | N | Title of the User. |\n| photo | Base64 | N | Photo of the User. |\n| phone | String | N | Phone number of the User. |\n| permission | Number | N | Operator Level of the User.  <br>  <br>**None**: The user has no operator privilege. To use this Operator Level, remove permission parameter from the API Request.  <br>**Administrator**: The user can use all menus.  <br>**User Operator**: The user can only use the USER and PREFERENCE menus.  <br>**Monitoring Operator**: The user can use the MONITORING and PREFERENCE menus and only view the DASHBOARD, USER, DEVICE, DOOR, ZONE and ACCESS CONTROL menus.  <br>**Video Operator**: The user can only use the VIDEO menu.  <br>**T&A Operator**: The user can only use the TIME ATTENDANCE menu and only view the USER menu.  <br>**User**: The user can only view own information and T&A records. |\n| access_groups | Number | N | ID of the Access Group that the User will have access. Refer to Access Group Section of this documentation for listing available Access Groups.  <br>Can enter more than 1 Access Group. |\n| login_id | String | N | Required when permission parameter is not removed. |\n| password | String | N | Required when permission parameter is not removed. |\n| user_ip | String | N | Limit the access of the User so he/she can only login from the registered IP Address.  <br>  <br>The user IP can be entered in the format xxx.xxx.xxx.xxx. Each octet can only be entered in numbers between 0 and 255.  <br>Users whose user IP is not registered can log in from any IP. |\n| pin | Number | N | PIN of the user. Maximum 32 digit. |\n\nWhen Setting > Server is set to Number, you can make use of endpoint `/api/users/next_user_id` to automatically get the next user_id. Refer to `GET` Find Next Available UserID for the detail of this endpoint.\n\n#### Known errors:\n\n- name is more than 48 characters\n    \n- Using single quote on name\n    \n- Duplicate user_id, email, or login_id\n    \n- Empty user_id, user_group_id, start_datetime, expiry_datetime\n    \n- Using user_group_id:id which doesn't exist\n    \n- Putting \"/\" at the end of the endpoint\n    \n- Password with 3 or more subsequent letter or number\n    \n- Start and expiry date difference is more than 30 years"
          },
          "response": []
        },
        {
          "name": "Step 5a User:Custom Field",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"user_custom_fields\": [\r\n            {\r\n                \"item\": \"TextInput here\",\r\n                \"custom_field\": {\r\n                    \"id\": \"1\"\r\n                }\r\n            },\r\n            {\r\n                \"item\": \"134669\",\r\n                \"custom_field\": {\r\n                    \"id\": \"2\"\r\n                }\r\n            },\r\n            {\r\n                \"item\": \"Motor\",\r\n                \"custom_field\": {\r\n                    \"id\": \"3\"\r\n                }\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "10"
                }
              ]
            },
            "description": "Use `GET /api/setting/custom_fields` to view available Custom Fields.\n\nThere are 3 type of Custom Fields: Text Input, Number Input and Combo Box. Text Input and Combo Box will accept any value, and Number Input will only receive number.\n\nBody parameter for Creating/Updating Custom Field on a User:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| item | String | N | Content of the Custom Field |\n| custom_field:id | Number | Y | ID of the Custom Field |\n\nTo skip create/update a Custom Field, remove it from the Body."
          },
          "response": []
        },
        {
          "name": "Step 5b User Credential: Misc (Include Device Default Authentication Mode)",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"pin\": \"\",\r\n        \"security_level\": 0,\r\n        \"private_operation_modes\": [\r\n            {\r\n                \"operation_method\": 2,\r\n                \"operation_mode\": 0,\r\n                \"exclude\": false\r\n            },\r\n            {\r\n                \"operation_method\": 2,\r\n                \"operation_mode\": 1,\r\n                \"exclude\": false\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "101"
                }
              ]
            },
            "description": "On this example you can see how to use stated parameters to adjust misc. credential values.\n\nParameters on this example:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| pin | Number | N | PIN of the User |\n| security_level | Number | N | To set the security level of the credential. The higher the security level is set, the false rejection rate (FRR) gets higher, but the false acceptance rate (FAR) gets lower. Acceptable value: 0 to 5 |\n| private_operation_modes |  |  |  |\n| :operation_method | Number |  | The first credential of an Authentication Mode (0: ID, 1: Card, 2: Fingerprint/Biometric (Standard), 3: Face) |\n| :operation_mode | Number |  | Authentication Mode combination (see below for reference, \"-1\" = do not use) |\n| :exclude | Boolean |  | If Include Device Default Authentication Mode option is on, so when you want to also follow the Auth Modes that the devices have, “private_operation_modes” will have same number of elements that you actually configured. But if Exclude Device Default Authentication Mode is on, you need to add four or more elements because all the values of “operation_method” should be included to override device’s Auth Modes. |\n\nAuthentication Mode Combination Table:\n\n| **Value** | **Code** | **Description** | **Type** |\n| --- | --- | --- | --- |\n| 0 | BS2_AUTH_MODE_BIOMETRIC_ONLY | Biometric only | Standard |\n| 1 | BS2_AUTH_MODE_BIOMETRIC_PIN | Biometric + PIN | Standard |\n| 2 | BS2_AUTH_MODE_CARD_ONLY | Card only | Standard |\n| 3 | BS2_AUTH_MODE_CARD_BIOMETRIC | Card + Biometric | Standard |\n| 4 | BS2_AUTH_MODE_CARD_PIN | Card + PIN | Standard |\n| 5 | BS2_AUTH_MODE_CARD_BIOMETRIC_OR_PIN | Card + Biometric or PIN | Standard |\n| 6 | BS2_AUTH_MODE_CARD_BIOMETRIC_PIN | Card + Biometric + PIN | Standard |\n| 7 | BS2_AUTH_MODE_ID_BIOMETRIC | ID + Biometric | Standard |\n| 8 | BS2_AUTH_MODE_ID_PIN | ID + PIN | Standard |\n| 9 | BS2_AUTH_MODE_ID_BIOMETRIC_OR_PIN | ID + Biometric or PIN | Standard |\n| 10 | BS2_AUTH_MODE_ID_BIOMETRIC_PIN | ID + Biometric + PIN | Standard |\n| 11 | BS2_EXT_AUTH_MODE_FACE_ONLY | Face | Extended |\n| 12 | BS2_EXT_AUTH_MODE_FACE_FINGERPRINT | Face + Fingerprint | Extended |\n| 13 | BS2_EXT_AUTH_MODE_FACE_PIN | Face + PIN | Extended |\n| 14 | BS2_EXT_AUTH_MODE_FACE_FINGERPRINT_OR_PIN | Face + Fingerprint/PIN | Extended |\n| 15 | BS2_EXT_AUTH_MODE_FACE_FINGERPRINT_PIN | Face + Fingerprint + PIN | Extended |\n| 16 | BS2_EXT_AUTH_MODE_FINGERPRINT_ONLY | Fingerprint | Extended |\n| 17 | BS2_EXT_AUTH_MODE_FINGERPRINT_FACE | Fingerprint + Face | Extended |\n| 18 | BS2_EXT_AUTH_MODE_FINGERPRINT_PIN | Fingerprint + PIN | Extended |\n| 19 | BS2_EXT_AUTH_MODE_FINGERPRINT_FACE_OR_PIN | Fingerprint + Face/PIN | Extended |\n| 20 | BS2_EXT_AUTH_MODE_FINGERPRINT_FACE_PIN | Fingerprint + Face + PIN | Extended |\n| 21 | BS2_EXT_AUTH_MODE_CARD_ONLY | Card | Extended |\n| 22 | BS2_EXT_AUTH_MODE_CARD_FACE | Cardn + Face | Extended |\n| 23 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT | Card + Fingerprint | Extended |\n| 24 | BS2_EXT_AUTH_MODE_CARD_PIN | Card + PIN | Extended |\n| 25 | BS2_EXT_AUTH_MODE_CARD_FACE_OR_FINGERPRINT | Card + Face/Fingerprint | Extended |\n| 26 | BS2_EXT_AUTH_MODE_CARD_FACE_OR_PIN | Card + Face/PIN | Extended |\n| 27 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT_OR_PIN | Card + Fingerprint/PIN | Extended |\n| 28 | BS2_EXT_AUTH_MODE_CARD_FACE_OR_FINGERPRINT_OR_PIN | Card + Face/Fingerprint/PIN | Extended |\n| 29 | BS2_EXT_AUTH_MODE_CARD_FACE_FINGERPRINT | Card + Face + Fingerprint | Extended |\n| 30 | BS2_EXT_AUTH_MODE_CARD_FACE_PIN | Card + Face + PIN | Extended |\n| 31 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT_FACE | Card + Fingerprint + Face | Extended |\n| 32 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT_PIN | Card + Fingerprint + PIN | Extended |\n| 33 | BS2_EXT_AUTH_MODE_CARD_FACE_OR_FINGERPRINT_PIN | Card + Face/Fingerprint + PIN | Extended |\n| 34 | BS2_EXT_AUTH_MODE_CARD_FACE_FINGERPRINT_OR_PIN | Card + Face + Fingerprint/PIN | Extended |\n| 35 | BS2_EXT_AUTH_MODE_CARD_FINGERPRINT_FACE_OR_PIN | Card + Fingerprint + Face/PIN | Extended |\n| 36 | BS2_EXT_AUTH_MODE_ID_FACE | ID + Face | Extended |\n| 37 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT | ID + Fingerprint | Extended |\n| 38 | BS2_EXT_AUTH_MODE_ID_PIN | ID + PIN | Extended |\n| 39 | BS2_EXT_AUTH_MODE_ID_FACE_OR_FINGERPRINT | ID + Face/Fingerprint | Extended |\n| 40 | BS2_EXT_AUTH_MODE_ID_FACE_OR_PIN | ID + Face/PIN | Extended |\n| 41 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT_OR_PIN | ID + Fingerprint/PIN | Extended |\n| 42 | BS2_EXT_AUTH_MODE_ID_FACE_OR_FINGERPRINT_OR_PIN | ID + Face/Fingerprint/PIN | Extended |\n| 43 | BS2_EXT_AUTH_MODE_ID_FACE_FINGERPRINT | ID + Face + Fingerprint | Extended |\n| 44 | BS2_EXT_AUTH_MODE_ID_FACE_PIN | ID + Face + PIN | Extended |\n| 45 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT_FACE | ID + Fingerprint + Face | Extended |\n| 46 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT_PIN | ID + Fingerprint + PIN | Extended |\n| 47 | BS2_EXT_AUTH_MODE_ID_FACE_OR_FINGERPRINT_PIN | ID + Face/Fingerprint + PIN | Extended |\n| 48 | BS2_EXT_AUTH_MODE_ID_FACE_FINGERPRINT_OR_PIN | ID + Face + Fingerprint/PIN | Extended |\n| 49 | BS2_EXT_AUTH_MODE_ID_FINGERPRINT_FACE_OR_PIN | ID + Fingerprint + Face/PIN | Extended |"
          },
          "response": []
        },
        {
          "name": "Step 5c User Credential: Misc (Exclude Device Default Authentication Mode)",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"pin\": \"\",\r\n        \"security_level\": 0,\r\n        \"private_operation_modes\": [\r\n            {\r\n                \"operation_method\": 2,\r\n                \"operation_mode\": 0,\r\n                \"exclude\": false\r\n            },\r\n            {\r\n                \"operation_method\": 0,\r\n                \"operation_mode\": -1,\r\n                \"exclude\": true\r\n            },\r\n            {\r\n                \"operation_method\": 1,\r\n                \"operation_mode\": -1,\r\n                \"exclude\": true\r\n            },\r\n            {\r\n                \"operation_method\": 3,\r\n                \"operation_mode\": -1,\r\n                \"exclude\": true\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "101"
                }
              ]
            },
            "description": "As stated on previous example (User Credential: Misc (Include Device Default Authentication Mode)), when you want to use Exclude Device Default Authentication Mode then you need to state all values of the Authentication Method.\n\nOn this example, the Authentication Mode that's being used is Biometric (operation_method: 2) only (operation_mode: 0) and the other Authentication Method: ID (0), Card (1), and Face (3) are set as do not use (operation_mode: -1) and hidden (exclude: true)\n\nTo use Extended Auth Mode simply use code that starts from 11 (refer to Authentication Mode Combination Table on User Credential: Misc (Include Device Default Authentication Mode)), do note that this mode only supported by FaceStation F2."
          },
          "response": []
        },
        {
          "name": "Step 5d User Credential: Card",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"cards\": [\r\n            {\r\n                \"id\": \"30\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "101"
                }
              ]
            },
            "description": "This example shows how to assign a card to a User, which is applicable to CSN, Wiegand, Smart, Mobile, and QR/Barcode.\n\nFirst the card must be enrolled to the database by using `POST /api/cards`.\n\nAfter enrolled, use `GET /api/cards` to view all Cards or `GET /api/cards/unassigned` to view all Cards which are unassigned.\n\nSelect a card from the response and apply it on the body as shown on the example to assign it to the selected user."
          },
          "response": []
        },
        {
          "name": "Step 5e User Credential: Face",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"credentials\": {\r\n            \"faces\": [\r\n                {\r\n                    \"raw_image\": \"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/ This is a truncated RAW Data\",\r\n                    \"templates\": [\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABq83b11/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACs9nf9Ov5vAxz64gF2/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABY+AP9VfxIB1T5zANF/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABr9I79d/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADM+FX9O/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACZ90T6E/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAp+eAAtv4QBOz7MgJ5/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAm+OMHjP9OBZ/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADZ9Un40fkJCKDzsv/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACC9ET98/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADv9jv6m/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACL8834ZPf5B7XxmgLw+1kBifoSEMrp5PIDCx8acwKeCJ7a5gYSA5oDKAkB9UT6Ae17F18EWP1gAlDxW/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAh+Y8EXvwlAGD6+wOy/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADU8nL8pvcyA6H1lP9P+AABqPw1Du/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAB09TD+u/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADZ/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABi+U78LPkEAUH7LgPs/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAM/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAD69iL9v/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAH+jcCd/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAl+f0ERADdBj/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAb+9MHIgKaBe36dwFm/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAB6+HYH2P+QBYb42gA2/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABG+gsHjQLuBaX7pf86/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADE96kF5Pz4Bsb4Cv6S/ Truncated\"\r\n                        }\r\n                    ]\r\n                },\r\n                {\r\n                    \"raw_image\": \"/9j/4AAQSkZJRgABAQAAAQABAAD/ Truncated\",\r\n                    \"templates\": [\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABu8qP+lPvSCAj2eQXHAnkBPfqWD/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAA+9R733fQfCmn3UwVfAC0B4fgaEBPsWPJQB3IYmP+jB9ndMgcPCBAJvgp/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACN93D/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAB7+Y/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACS8Qb9mf2vCnL2QgU5AV8Bifq3D3vn4PMdClcYyf8nCtnbKgWg9igF0Bff+VP5p/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABO+Cv/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADn8j36PvezBVj1WAA491D/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAA19ar5EfSCCev5TQWJA6YAYPhUE97ppPLKB3Igs/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACb9Pz9EPzQBlv3bwJKAPf/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADy95n9o/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAa8lX8MvVkCQ7yDQIN+4ABtfp4DfvnC/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACU8t747PMICNDz9AAcAFEB6/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADl+en+if33BEL4oP7T+24EYvyfEmHpKfRrB/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACe/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADU+Pn/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAD49sL9HP5EA3j5NP7F+wYA1vl4ENnoJfbRCvES3v1ZCuDZrQWP/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADd+TsJu/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAAy8DgAn/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACY+noFNvzsBDP+mQLp+sP9LvxsFjflI/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACX9cL9evw0BET1Sv5G/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADW+ZIG2v2PAxj8nQHx+yb8xvq/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAAA79hL9qPxvAyX5wQA8+F7+pvfXDIPlkPOpB2EUVP8RBmvW7gF3+9oFfxEa9br1K/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAABU+/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAADg+74DUvxrBPL+NgSM+hX/ Truncated\"\r\n                        },\r\n                        {\r\n                            \"template\": \"AAAAgAAAAACW+10JkwElBy79hwNj/ Truncated\"\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "102"
                }
              ]
            },
            "description": "This example shows how to add a Face Credential on a User.\n\nYou can add the user's faces if the device supports face authentication.\n\n- When registering a face, maintain a distance of 40cm to 80cm between the device and the face.\n    \n- Be careful not to change the facial expression. (smiling face, drawn face, wink, etc.)\n    \n- If you do not follow the instructions on the screen, the face registration may take longer or may fail.\n    \n- Be careful not to cover the eyes or eyebrows.\n    \n- Do not wear hats, masks, sunglasses or eyeglasses.\n    \n- Be careful not to display two faces on the screen. Register one person at a time.\n    \n- It is recommended for a user wearing glasses to register both faces with and without glasses.\n    \n\nParameters on this example:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| faces | Array | Y | Main container of the credential |\n| :raw_image | Raw | Y | Raw image of the face scan |\n| :templates | Array | Y | Container of the face templates |\n| ::template | Raw | Y | Face template of the User |\n\nTo get data for parameter raw_image and template, use `GET /api/devices/:device_id/credentials/face`\n\nUse `POST /api/v2/devices/search` to list all device which can support the selected credentials. See API documentation for details on the usage of the API.\n\nWhen updating a User, it is required to put the credential data as acquired from `GET /api/users/:id`  \nThis is done so the data won't be lost after update.\n\nTo delete a Face, skip the parameters on using this API.\n\nYou can use raw_image value as value on photo parameter of a User."
          },
          "response": []
        },
        {
          "name": "Step 5f User Credential: Visual Face",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"credentials\": {\r\n            \"visualFaces\": [\r\n                {\r\n                    \"template_ex_normalized_image\": \"/9j/4AAQSkZJRgABAQEASABIAAD/ Truncated\",\r\n                    \"templates\": [\r\n                        {\r\n                            \"credential_bin_type\": \"5\",\r\n                            \"template_ex\": \"AAABAAEAKgHyAaUA1wBj8vP2XEpVQSt0dQAAhQApwwBkcAAAOQAAAIR9eH6CiHmDeIJ+hHp/fX54eoOMdol5f4d9fYGHfoSAfHiAenuJgYZ8g3yAfXmBg36CgoGGhn6Ce3eDeXp3eIWGbnqGfJF4hIl4cX54gX+Ceod8cIJ9g32CgH+AhoeBgH12go57h4F4iXh6g31+gX+BdnyKhYKCfXqLeX2AgomMfYR/foKDgXt7hHp/fXh6g315dnp/f4N8f3h9g3Z+c3J7hH9/gYaFfoGKd3yHeXl/d3+AeXd+fYR8fn2Dd4OGfoF8hIGCgn+DfH+HhXp/e4V9fHiAhXeBgX94f3F6hIeBent8fYCAg4J1hnl+c4F6doZ9g32JhnuDg3l4fXyEg3uEfYmEh3yCf4Z2gH2BgoZ/g3p2hXuIhIOCfYKBfXd8hIeDdYSFfHSDg3R+d4eBeY98gXp1dH59fHyBhXl4hG+Aen2De4OCgIGKhXmFgnuHfH98hIl6fIZ0gIB2homJgHuFf4OKhYZ8hHqFgoB9jYeGgX57iYGCfIV6f4aBfnqAhoV9e4KBgYmDgH55g4Z8hoCDhIR8gIOHfniChIB5hXl/gIV4f4l+g3V5hn5/f45/fHmAgIB5gIR8fYiGeoKBdXZ+eIB+gneDenl+fIGBgIeEf4CCjIJ3eYKCiX13gHh9eIeChX6FdYGFfYSFhn6EhYCGf4h5e4OLfYl9gIN3fYR8\"\r\n                        },\r\n                        {\r\n                            \"credential_bin_type\": \"9\",\r\n                            \"template_ex\": \"AAABAAEAVgHZAa8A4wAAAAAAWFVLREUAAAAAdVANMQFkcAAAOQAAAIWEdn+Din+Ed4GCg3eAhHl4gX6OdI56foZ7e3yGe4d7d4OIfnaFgYJ/goB7eniCgXx8gYSEhHqBfXp/eoJ2f4GFcYCAfYV7gYZ3d3l4hHqEfI94cYCDg3+Bf397iYyAgHx7gIp4hol2gnx7hYGAe4KGf4J+gYR+fneJd319gouMf4CAgoWKe3p/hH1/g3pygH57eYGCfop/eoCAi3l6c3d7hIaAiICCfnyIc3qCdXx9en2AeH6DgXp9e4CDe4yGfIKEfoKGgXiCgYOEhnl4foCDf3uFg3qBgIF2g3J8foSBeXh7gYOCgYB6iIR9enx7dYR/fX6AgoCCgXh8fXyAeXuAfYmGiXd9f4p2gXqBgoh7hXl8hXuCgoGCgYZ+e3p/hYSBgomLgnOBf3uCe4WEhIx6fnt4eYZ8gnt7hnp7gHqFfoF/fYCAhIKCgnaDenyJf3t+goh4hYV2goN7g4eNfYOBd4KLgoSBh3qAhn5/joGDgYF6gH6HfYlzhop9hH6AeYGAgH9/gIt/iYJ+god9jYOCgoR/g4WCg3WCg4B4hXl8fYR5iYGAg353g3R6fYd7d3WHgX1xf3t4gYWIeYKEe3h8eoOBf3WGdYCChIR7foiDgX56hYh+eX6AiXuBfXiAdomAeoB+doSCf4aFgXmDgX2AfYp9fH2KfIR6foJwfIOB\"\r\n                        }\r\n                    ]\r\n                },\r\n                {\r\n                    \"template_ex_normalized_image\": \"/9j/4AAQSkZJRgABAQEASABIAAD/ Truncated\",\r\n                    \"templates\": [\r\n                        {\r\n                            \"template_ex\": \"AAABAAEAgwFoAbgA6gBl8vryXUdWNip7hwAAnKA+uQBkcAAAOQAAAIZ7eX5/iX2CeH59iXuAgH1vfoWNdop8gIqAfoCIe4iAdYGFenmHgId7fH5+fHN/g3+GgICCgHmCe3mEc3tze4uGdH+IgYt5hIR4dYN4gn+AeoV8b4B8g3qAh4GFiId/f391gYp3foJ2iHp6gXuAg3uBgH+Jg4F8fneHgICEg4aMfH9/fISEgH17iHh4fnp1hIF/fXyBeYaAfn96hXZ8e3R+gX98hYOAf32GeX+Ie3x9d314fHyBgIR6fYKDeIWHf4KDiICFhnuAeoB7gXeEe4B8fnl/h3d5hIJ6fXR5f4aFfXyBe4B+hIRziYN6eYR7eH9/gYCEgHuCgHp4fYOHgoN/eomGh3Z7e4Vzf3qAjYt+gH16gX2Dgn6DfIOAfnZ6hYuAfISKgXiFgHV9d4uBf4iFgHZ5d3x9gXx5gn55hHSCfn6AfYSBhIKIhnSFhYGMen58gYd7gIN2fnl5h4SLgnmHfX2HgYV7gH2Fe4F7h4GBfn98iH+DfYl5gIJ9g319gIV/g4J8gYV/fHt5hIN9i4KEg35+h4eJg4B8fHp7gXl+hYJzf4V6gntxhn9+eoR/fHuDfHx7gIJ4f4SBfH9+doB9d4F/fXaFdHl9eoOEfoWEf3uEhoV0doCCjHt0hXl+coOAg4ODdYSGgIOHh3yBioCEeYx7eXyMf4l/hYF1foWD\",\r\n                            \"credential_bin_type\": \"5\"\r\n                        }\r\n                    ]\r\n                }\r\n            ]\r\n        }\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "102"
                }
              ]
            },
            "description": "Visual Face is a credential that captures the user's face with a visual camera. It is different from face information captured with an infrared camera and is only available on devices that support Visual Face.\n\nThere are two ways to input a Visual Face: by scanning through a enrollment device, or by uploading an image.\n\nUp to two (2) visual faces can be added.  \nUse `GET /api/devices/:device_id/credentials/face` to scan Visual Face using an enrollment device.\n\nYou can enroll a visual face using FaceStation F2.  \nUse `POST /api/v2/devices/search` to list compatible devices.\n\nTo upload image as a Visual Face: image file size is up to 10MB and supported file formats are JPG, JPEG and PNG.  \nUse `PUT /api/users/check/upload_picture` to check whether the image is suitable for use or not.  \nBODY example on using Upload Picture:\n\n``` json\n{\n\"User\": {\n \"credentials\": {\n  \"visualFaces\": [{\n   \"template_ex_picture\": \"/9j/4AAQSkZJRgABAQAAAQABAAD/ Truncated\"\n  }]\n }}\n}\n\n```\n\nParameters on this example:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| visualFaces | Array | Y | Main container of Visual Face credential |\n| :template_ex_normalized_image | Base64 | Y | Cropped image ready for visual face extraction. |\n| :templates | Array | Y | Container of the templates |\n| ::credential_bin_type | Number | Y | UNKNOWN = -1  <br>FACE_TEMPLATE = 0  <br>FACE_TEMPLATE_IMAGE = 1  <br>FACE_RAW_IMAGE = 2  <br>FACE_TEMPLATE_EX_VER2 = 5 (For FaceStation F2)  <br>FACE_TEMPLATE_EX_VER_3 = 9 (For BioStation 3 and W3)  <br>FACE_TEMPLATE_EX_NORMALIZED = 7  <br>FACE_TEMPLATE_EX_PICTURE = 8 |\n| ::template_ex | Raw | Y | Visual Face template data which includes FaceStation F2 and the new BioStation 3. |\n| :template_ex_picture | Base64 | Y | Parameter for Upload Picture raw data |"
          },
          "response": []
        },
        {
          "name": "Step 5g User Credential: Fingerprint",
          "event": [
            {
              "listen": "prerequest",
              "script": {
                "exec": [
                  ""
                ],
                "type": "text/javascript"
              }
            }
          ],
          "request": {
            "method": "PUT",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\r\n    \"User\": {\r\n        \"fingerprint_templates\": [\r\n            {\r\n                \"finger_mask\": \"false\",\r\n                \"template0\": \"RSoQFLAAVUYMBEBvBBlEsWSLFITAEIUGBgEYBA/G0W0IAwcgdgEbh2ANixfIMGUKEshwF4QOCbBzhjXEsaCFJITQAYohRSBViCSGoUsRLAcQooYoh6GlCDpIgZ2GKMkARgkyCXCehDhJgEIDG0sxYJsOy0BziBaMcGmPG4ywUaAVTdBokwxOEXgHEE6AeIIVT0FoERfPYBsxGg9gK9EK0QB4jRxSYRqFEhNAbxkXk1AUChiTUHSHL8zwl4EmDiE3CCHPADWKK5DAOo8nUZAqDS5SIUKXK9JhOZj////g/////////eAB///////d4AEi/////N3gASM////M3eABIzT/+7zd4BIzRE+7u83gEjNET7u7zeASNERFu7vN4BI0REW6u8zgIzRERaqqvOAjRERFqqq84TREREWqqrziNFVUT6mqvOJFVVVfqqq9BFVVVU/5qrqHd2ZU//+qqZiIdkT///qqqZh1T///+6qqqYX/////u6uqj///\",\r\n                \"template1\": \"RSgQFK8AVUYRBDBvhxqEgBGFHsSRZwsIhRF1BQtGIRuEFsZxawgJRwB5AR4H4GULGYgQF4UUyYB0hyqEsAOJJsTRWIgrRkBKjyKG4QoLMsbwooQvB3GkBi9I0EYHOUnBnQMJSgF4ghXK8HWKHYwQZ5EIzQAfhRPN4XsEHA4BbBYXzhB5hRzO8WaYB89AdoQeT0AdsQgQAHiJDlFQdoIiSvFfHCLMcE4iNszwmAIszkE2hihO8DQJIM9QKkMxEJA3CC4RwCeOIlKBHAMxEsBFIv///d3////////M3eD/////+8zd4BL///+7zN3gEj//+rvM3eASM/+qu8zd4BIzT6q7vM3gEjRFqqq7zeASNESqqrvN4CNERaqqq7zhI0RFqqqrvOE0REWqqqq84jRFVaqqqrwDRFVVqqmavQRVVVWqqqq9JVVVVvq7qqmHdmZv/6qqqZiHZm//+qqqmZhV////u6qqmFT///+7uqqoT/8=\"\r\n            },\r\n            {\r\n                \"finger_mask\": \"true\",\r\n                \"isNew\": true,\r\n                \"template0\": \"RDMQFLMAVUYqCxCIFCyhiDMthws5MBAMIzEcBRE5ngYwQIwND02jBWUP6AV2I18FcTfjBFE5ZQpeROADPVWCmzxhCfw+ZERIOXK1JzVzsykxdLUjIngqgih+rhAlfyaNPoAZGiGFqwwqhpuMTFbqj0NZXBxfXNeCUV1Ri2BkVgJvaVwGUWtGilZsTopmbtQDSm9GCkNyKpNbdlGIa3hahUh6NgxBfB6eRH6zFHSC2RBSgzYPZYvXDVONHEVNjbKlV45N4WKO25hVlJWkYpT0lWyV6Q////7gASL/////3eABIj////zd4AEjM///vN3gASMz//+83e4BIzRPq7zN4BEjRESrvM3gEjNERLu7zOASM0REu7vM4BM0RESru7zQE0RERKu7vNAjREREqqq7wDRVVET6qqqnZlVURPqqmZh2ZVVF+qqZmYdmVVb/qrvLmHZVV//6vMuodlX////MzLl0X////8zMy+FP////vMzL4P//\",\r\n                \"template1\": \"RDQQFLMAVUYkEBKGDzKihS4yj4o2NAmKHzYeBgw/nwQrR4wOYRToBXIoXQZtPOEFTEFpiVxJ4YMJVKMEOVyCmD9gXBs4Zwn4OWpEUjVqOEI3bTkjM3e7JT93JZM0e66hHX0vhi5+pJskg64SQIOyHCCEKI0niZkQR1zqklxf3AJNY1KLW2lYg2tuXAZLcUoJUnJPimNz1wJ7c98PRnRECld7UIlofFuFYX3UBWR9VgdEfzYOcYXdD02HOw5iitcIR4spimOLYghNkbsLT5FED2eS5Alfkt2T///+4BH//////97gESL/////3uASIz///8ze4BIjNP/7zN7gEiM0/7u83uASM0RFu7zd4BIzRES7vM3hEjNERLu7zQEjNEREu7vN4SM0RES7u83hI0RERLu7vOE0RERFqqq84kVVREWqqqqWZlVERfqqmph2ZVRF//mruodmVF///7y6h2ZU////vLuYZU/////MvLo0T////8y8z////w==\"\r\n            }\r\n        ]\r\n    }\r\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/users/:id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users",
                ":id"
              ],
              "variable": [
                {
                  "key": "id",
                  "value": "14"
                }
              ]
            },
            "description": "This example shows how to update fingerprint data on a User.\n\nThe BODY parameters as follows:\n\n| **Parameter** | **Type** | **Required** | **Description** |\n| --- | --- | --- | --- |\n| fingerprint_templates |  |  |  |\n| :finger_mask | Boolean | N | Set to True to mark the fingerprint as a duress fingerprint. When threatened by someone to open the door, the user can authenticate using this fingerprint to send an alarm signal to BioStar X. |\n| :template0 | Raw | Y | First scan template of the fingerprint |\n| :template1 | Raw | Y | Second scan template of the fingerprint |\n| :isNew | Boolean | N |  |\n\nUse `POST /api/devices/:dev_id/scan_fingerprint` to enroll fingerprint  \nUse `POST /api/server_matching/identify_finger` to check whether the fingerprint already recorded or not.\n\n- Raw data for template0 and template1 available after enrolling a fingerprint.\n    \n- Fingerprint(s) used for regular access should not be registered as duress fingerprint.\n    \n- If the fingerprint authentication rate is low, delete the existing fingerprint information and add a new fingerprint.\n    \n- Use an adequate security level. If 1:1 Security Level is too high, the fingerprint authentication rate may be too low or the false rejection rate (FRR) may be too high.\n    \n- For best fingerprint scanning quality, make sure to cover the entire surface of the fingerprint sensor with the finger."
          },
          "response": []
        }
      ]
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "value",
        "value": "{{bsid}}",
        "type": "string"
      },
      {
        "key": "key",
        "value": "bs-session-id",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "requests": {},
        "exec": [
          ""
        ]
      }
    },
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "requests": {},
        "exec": [
          ""
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "baseUrl",
      "value": ""
    },
    {
      "key": "bsid",
      "value": "---"
    },
    {
      "key": "nuid",
      "value": ""
    },
    {
      "key": "nLoop",
      "value": ""
    },
    {
      "key": "doorID",
      "value": ""
    },
    {
      "key": "w_dev_id",
      "value": ""
    },
    {
      "key": "w_dev_dtid",
      "value": ""
    },
    {
      "key": "w_dev_ip",
      "value": ""
    },
    {
      "key": "w_dev_connmode",
      "value": ""
    },
    {
      "key": "iterIDVal",
      "value": ""
    },
    {
      "key": "iterIDVal1",
      "value": ""
    },
    {
      "key": "lPassword",
      "value": ""
    },
    {
      "key": "nuid1",
      "value": ""
    }
  ]
}