{"info":{"_postman_id":"d5095555-473a-4d3c-b7c2-45e83a003b3a","name":"DERAS Protocol v1.6.1 - WebSocket API","description":"<html><head></head><body><p>Reference collection for the DERAS Protocol WebSocket API (Developer Guide for System Integrators, v1.6.1).</p>\n<p>DERAS is a WebSocket-based communication layer that unifies integration with various RFID reader brands, via the DERAS Box / DERAS.EXE. It operates entirely on the local network (no internet required).</p>\n<p><strong>Base URL:</strong> <code>ws://&lt;DERAS_BOX_IP&gt;:3030</code></p>\n<hr>\n<h3 id=\"⚠️-important--how-to-actually-use-this-in-postman\">⚠️ Important — how to actually use this in Postman</h3>\n<p>Postman does not currently support importing/exporting real WebSocket requests as collection JSON (this is a known Postman limitation — WebSocket/gRPC collections can only be saved from inside the app and can't be exported). So this collection is a <strong>payload reference library</strong>: every request below stores the exact JSON <code>event</code> payload from the documentation in its Body tab, plus the documented success/error/streaming responses in its Description tab. The request method/URL are placeholders only — do <strong>not</strong> hit Send on them as HTTP calls.</p>\n<p><strong>Recommended workflow:</strong></p>\n<ol>\n<li>Import this collection AND the companion environment (<code>DERAS Protocol - Environment.postman_environment.json</code>).</li>\n<li>Select the DERAS environment, then edit <code>deras_box_ip</code> to match your actual DERAS Box IP.</li>\n<li>In Postman click <strong>New → WebSocket</strong>, set the URL to <code>ws://192.168.88.120:3030</code>, and click <strong>Connect</strong>.</li>\n<li>Open any request in this collection, copy the JSON from its <strong>Body</strong> tab, paste it into the WebSocket message composer, and click <strong>Send</strong>.</li>\n<li>Responses (including streamed/pushed events like <code>scan-rfid-result</code>) will appear in the WebSocket message log — compare them against the <em>Success/Error/Streaming Response</em> documented on each request.</li>\n</ol>\n<h3 id=\"standard-payload-fields\">Standard payload fields</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tid</code></td>\n<td>Tag ID – unique identifier of the RFID chip</td>\n</tr>\n<tr>\n<td><code>epc</code></td>\n<td>Electronic Product Code – usually matches/relates to the TID</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>Integer flag: 1 = active, 0 = inactive</td>\n</tr>\n<tr>\n<td><code>category</code></td>\n<td>0 = item/good, 1 = person, other integers = custom use</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>Human-readable label for the tag</td>\n</tr>\n<tr>\n<td><code>flag_alarm</code></td>\n<td>1 = alarm triggers on tag detection, 0 = alarm disabled</td>\n</tr>\n<tr>\n<td><code>no_sku</code></td>\n<td>Client-defined master key / SKU reference. <strong>Cannot be changed once inserted.</strong></td>\n</tr>\n<tr>\n<td><code>remark</code></td>\n<td>Used by report-logs (e.g. INBOUND, OUTBOUND)</td>\n</tr>\n</tbody>\n</table>\n</div></body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"34907871","collectionId":"d5095555-473a-4d3c-b7c2-45e83a003b3a","publishedId":"2sBYAuTrxm","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-09-01T09:16:08.000Z"},"item":[{"name":"0. Setup & Connection","item":[{"name":"1. Connect-IP","id":"31b19196-f5dd-40f8-b150-40f6aaafe881","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"connect-ip\",\n  \"value\": {\n    \"ip_address\": \"192.168.88.120\",\n    \"port\": 8888\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Initial command to connect the application to the RFID reader hardware using its IP address and port. Send this right after opening the WebSocket connection to the DERAS Box.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-connect-ip\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-connect-ip\",\n  \"statusCode\": 0,\n  \"message\": \"Error Connect\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"31b19196-f5dd-40f8-b150-40f6aaafe881"},{"name":"2. service-status","id":"7afd1afa-4833-4bc0-b8d6-9061515980df","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"service-status\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Returns the current running status of the DERAS Box (hardware connection state, tracking/loss-prevention state, uptime, all running DERAS services, etc). Useful as a first health-check after opening the socket.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-service-status\",\n  \"statusCode\": 1,\n  \"message\": \"success\",\n  \"value\": {\n    \"is_hardware_connected\": false,\n    \"is_track_and_trace_on\": false,\n    \"is_loss_prevention_on\": false,\n    \"rssi_threshold_limit\": 90,\n    \"connection_type\": 0,\n    \"hardware_type\": 0,\n    \"is_barcode_connected\": false,\n    \"is_printer_connected\": true,\n    \"tag_read_throttle_time\": 1000,\n    \"up_time_service\": {\n      \"started_utc\": \"2026-06-29T05:07:46.2539569+00:00\",\n      \"uptime_seconds\": 85564.1178062,\n      \"uptime\": \"23:46:07.3252666\"\n    },\n    \"hardware_device\": {\n      \"ip\": \"192.168.89.120\",\n      \"port\": \"8888\",\n      \"power_ant\": {}\n    },\n    \"http_server_port\": \"80\",\n    \"websocket_port\": \"3030\",\n    \"all_services\": [\n      {\n        \"port_ws\": \"3030\",\n        \"port_http\": \"80\",\n        \"title\": \"DERAS-SERVICE-1-MASTER\",\n        \"version\": \"1.6.1\",\n        \"is_hardware_connected\": false,\n        \"hardware_type\": \"CHAINWAY\",\n        \"uptime_seconds\": 85564.1178062,\n        \"last_heartbeat\": \"2026-06-30T04:53:55.4124577Z\",\n        \"status\": \"online\"\n      },\n      {\n        \"port_ws\": \"3031\",\n        \"port_http\": \"81\",\n        \"title\": \"DERAS-SERVICE-2-AMAN\",\n        \"version\": \"1.6.1\",\n        \"is_hardware_connected\": true,\n        \"hardware_type\": \"CHAINWAY\",\n        \"uptime_seconds\": 386282.83438889997,\n        \"last_heartbeat\": \"2026-06-28T20:05:05.853871Z\",\n        \"status\": \"offline\"\n      },\n      {\n        \"port_ws\": \"3032\",\n        \"port_http\": \"82\",\n        \"title\": \"DERAS-SERVICE-3-LACAK\",\n        \"version\": \"1.6.1\",\n        \"is_hardware_connected\": true,\n        \"hardware_type\": \"CHAINWAY\",\n        \"uptime_seconds\": 596690.0003181,\n        \"last_heartbeat\": \"2026-06-30T04:53:57.9047854Z\",\n        \"status\": \"online\"\n      },\n      {\n        \"port_ws\": \"3034\",\n        \"port_http\": \"84\",\n        \"title\": \"DERAS-SERVICE-4-RACK\",\n        \"version\": \"1.6.1\",\n        \"is_hardware_connected\": true,\n        \"hardware_type\": \"ZEBRA_FIXED\",\n        \"uptime_seconds\": 595353.4251317,\n        \"last_heartbeat\": \"2026-06-30T04:53:55.536704Z\",\n        \"status\": \"online\"\n      }\n    ]\n  }\n}\n</code></pre>\n<blockquote>\n<p>⚠️ <strong>Note:</strong> This event is documented near the end of the guide but is placed here because it is typically the first thing you call to confirm the DERAS Box is reachable.</p>\n</blockquote>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"7afd1afa-4833-4bc0-b8d6-9061515980df"}],"id":"450d71af-d37d-45dd-a728-6ca4885f978c","description":"<p>Connect to the WebSocket and verify the DERAS Box is reachable before sending any other event.</p>\n","_postman_id":"450d71af-d37d-45dd-a728-6ca4885f978c"},{"name":"1. RFID Scanning","item":[{"name":"1. scan-rfid-on","id":"8a6ade40-4632-4e6a-b153-6b9b64838596","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"scan-rfid-on\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Starts the RFID antenna scanning. Tag reads are then pushed continuously on the same connection via the streaming 'scan-rfid-result' event (see the Streaming Events folder).</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-scan-rfid-on\",\n  \"statusCode\": 1,\n  \"message\": \"success!\"\n}\n</code></pre>\n<p><strong>Streaming / Pushed Result (server → client, arrives on the same open connection):</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"scan-rfid-result\",\n  \"type\": 1,\n  \"data\": \"64D99DF0FECABE275F89B617A7D44606\",\n  \"data_tid\": \"E28011702000005672D20B5B\",\n  \"pc\": null,\n  \"user\": \"\",\n  \"ant\": \"1\",\n  \"rssi\": \"-50,7.0\",\n  \"sensor\": null,\n  \"rfid_valid\": \"1\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"8a6ade40-4632-4e6a-b153-6b9b64838596"},{"name":"2. scan-rfid-off","id":"37f12ec1-371f-43d8-95cf-e8539fa6c38f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"scan-rfid-off\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Stops RFID antenna scanning.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-scan-rfid-off\",\n  \"statusCode\": 1,\n  \"message\": \"success!\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"error\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"37f12ec1-371f-43d8-95cf-e8539fa6c38f"},{"name":"3. scan-rfid-single","id":"2395f4c9-6a2a-46ee-b712-f3212f502772","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"scan-rfid-single\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Reads only a single tag, then automatically stops (Hanya membaca satu tag lalu mati).</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-scan-rfid-single\",\n  \"statusCode\": 1,\n  \"message\": \"success!\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"error\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"2395f4c9-6a2a-46ee-b712-f3212f502772"},{"name":"4. scan-rfid-light-on","id":"1031c8e4-32ce-4c6f-8674-2897e1c91adf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"scan-rfid-light-on\",\n  \"value\": {\n    \"tid\": \"...\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Lights up the LED on a specific tag. Only the 'tid' field is required in value.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-scan-rfid-light-on\",\n  \"statusCode\": 1,\n  \"message\": \"success!\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"error\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"1031c8e4-32ce-4c6f-8674-2897e1c91adf"},{"name":"5. set-filter","id":"450705ef-ff11-4e9d-b1c3-54317953415e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"set-filter\",\n  \"value\": {\n    \"bank\": 0,\n    \"ptr\": 0,\n    \"len\": 24,\n    \"data\": \"E2801171\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Sets a specific filter for RFID reads. Make sure RFID scanning is turned OFF before setting a filter.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-set-filter\",\n  \"statusCode\": 1,\n  \"message\": \"successfully set filter\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-set-filter\",\n  \"statusCode\": 0,\n  \"message\": \"Error Connect\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"450705ef-ff11-4e9d-b1c3-54317953415e"},{"name":"6. disable-filter","id":"f2e2dc9d-2412-42b9-bc5f-bbba89b69fe7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"disable-filter\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Disables all currently active RFID filters.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-disabled-filter\",\n  \"statusCode\": 1,\n  \"message\": \"successfully disable filter\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-disable-filter\",\n  \"statusCode\": 0,\n  \"message\": \"Error Connect\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"f2e2dc9d-2412-42b9-bc5f-bbba89b69fe7"}],"id":"1dbcfc9a-8bdd-4ea0-8278-7a185eef815d","description":"<p>Connect RFID hardware and control scanning modes / filters.</p>\n","_postman_id":"1dbcfc9a-8bdd-4ea0-8278-7a185eef815d"},{"name":"2. GPIO & Hardware Control","item":[{"name":"1. set-gpio-on","id":"ff3ce510-f5db-4e8c-8138-f632cb5058c3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"set-gpio-on\",\n  \"value\": {\n    \"pin\": \"2\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Activates a GPIO pin (alarm, door lock, etc).</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-set-gpio-on\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"error\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"ff3ce510-f5db-4e8c-8138-f632cb5058c3"},{"name":"2. set-gpio-off","id":"82992303-26ae-436a-bd5d-cdd3d8afbc26","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"set-gpio-off\",\n  \"value\": {\n    \"pin\": \"2\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Deactivates a GPIO pin (alarm, door lock, etc).</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-set-gpio-off\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"error\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"82992303-26ae-436a-bd5d-cdd3d8afbc26"},{"name":"3. set-buzzer-on","id":"e7f2a278-4370-4e0a-bb0d-286227683eb6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"set-buzzer-on\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Turns the buzzer on.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-set-buzzer-on\",\n  \"statusCode\": 1,\n  \"message\": \"Buzzer-on!\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"error\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"e7f2a278-4370-4e0a-bb0d-286227683eb6"},{"name":"4. set-buzzer-off","id":"634da0e3-144c-4c49-8a5b-3de7e64ae44b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"set-buzzer-off\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Turns the buzzer off.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-set-buzzer-off\",\n  \"statusCode\": 1,\n  \"message\": \"Buzzer-off!\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"error\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"634da0e3-144c-4c49-8a5b-3de7e64ae44b"},{"name":"5. set-antenna","id":"1d1db052-aeac-41d5-94ff-d282a4549eba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"set-antenna\",\n  \"value\": [\n    {\n      \"ant1\": true\n    },\n    {\n      \"ant2\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Enables or disables specific antennas.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-set-antenna\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"error\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"1d1db052-aeac-41d5-94ff-d282a4549eba"},{"name":"6. get-antenna-status","id":"dfbd90b2-021b-4208-961a-cfa675716a02","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"get-antenna-status\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Retrieves the current antenna configuration (which antennas are enabled).</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-get-antenna-status\",\n  \"statusCode\": 1,\n  \"message\": \"success!\",\n  \"Value\": [\n    {\n      \"ant1\": true\n    },\n    {\n      \"ant2\": false\n    },\n    {\n      \"ant3\": false\n    },\n    {\n      \"ant4\": true\n    },\n    {\n      \"ant5\": false\n    },\n    {\n      \"ant6\": false\n    },\n    {\n      \"ant7\": false\n    },\n    {\n      \"ant8\": false\n    },\n    {\n      \"ant9\": false\n    },\n    {\n      \"ant10\": false\n    },\n    {\n      \"ant11\": false\n    },\n    {\n      \"ant12\": false\n    },\n    {\n      \"ant13\": false\n    },\n    {\n      \"ant14\": false\n    },\n    {\n      \"ant15\": false\n    },\n    {\n      \"ant16\": false\n    }\n  ]\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"dfbd90b2-021b-4208-961a-cfa675716a02"},{"name":"7. set-rfid-power","id":"84072939-8b7b-4d7a-979b-86a93d12ff9b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"set-rfid-power\",\n  \"value\": 30\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Sets the RFID reader's overall power level.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-set-rfid-power\",\n  \"statusCode\": 1,\n  \"message\": \"success!\",\n  \"value\": \"30\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"84072939-8b7b-4d7a-979b-86a93d12ff9b"},{"name":"8. get-rfid-power","id":"045a0f9f-a96d-4e19-8852-466c224ffb5c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"get-rfid-power\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Gets the RFID reader's current power level.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-get-rfid-power\",\n  \"statusCode\": 1,\n  \"message\": \"success!\",\n  \"value\": 16\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"045a0f9f-a96d-4e19-8852-466c224ffb5c"}],"id":"f420c2b7-7efa-44f2-ab1e-ff6f97bbbab1","description":"<p>Control GPIO pins, buzzer, antennas and reader power.</p>\n","_postman_id":"f420c2b7-7efa-44f2-ab1e-ff6f97bbbab1"},{"name":"3. Database Access (CRUD)","item":[{"name":"1. db-storage-get-rfid-list","id":"188c2e35-0c5c-4c81-b946-8a25145f3dd3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-get-rfid-list\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Retrieves all registered RFID tags stored in the local database.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-get-rfid-list\",\n  \"statusCode\": 1,\n  \"message\": \"success\",\n  \"Value\": {\n    \"skip\": 0,\n    \"limit\": 2,\n    \"total\": 2,\n    \"data\": [\n      {\n        \"id\": 0,\n        \"tid\": \"E2801170200014D772D70B5B\",\n        \"epc\": \"857B293C7D33B3E4B382335AF1A283A8\",\n        \"Status\": 1,\n        \"created_time\": \"2025-07-19T13:01:06.4840885\",\n        \"description\": \"E2801170200014D772D70B5B\",\n        \"Category\": 0,\n        \"Flag_alarm\": 1,\n        \"no_sku\": \"E2801170200014D772D70B5B\"\n      },\n      {\n        \"id\": 0,\n        \"tid\": \"E2801170200004D3729A0B5B\",\n        \"epc\": \"CFBF2FCE0D075495024658AA53C72202\",\n        \"status\": 1,\n        \"created_time\": \"2025-07-15T11:15:17.6650611\",\n        \"Description\": \"92839427010\",\n        \"Category\": 0,\n        \"Flag_alarm\": 0,\n        \"no_sku\": \"92839427010\"\n      }\n    ]\n  }\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-get-rfid-list\",\n  \"statusCode\": 0,\n  \"message\": \"error: Data not found!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"188c2e35-0c5c-4c81-b946-8a25145f3dd3"},{"name":"2. db-storage-insert-rfid-list","id":"2a4abe89-628d-4a48-aab5-b6ad1150acb9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-insert-rfid-list\",\n  \"value\": {\n    \"tid\": \"E2801170200014B772D70B5B\",\n    \"epc\": \"E2801170200014B772D70B5B\",\n    \"status\": 1,\n    \"category\": 0,\n    \"description\": \"CONTOH\",\n    \"flag_alarm\": 1\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Registers / saves a new tag record into the database.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-insert-rfid-list\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-insert-rfid-list\",\n  \"statusCode\": 0,\n  \"message\": \"error: insert data!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"2a4abe89-628d-4a48-aab5-b6ad1150acb9"},{"name":"3. db-storage-insert-rfid-logs","id":"79ae235a-650a-4dba-8e63-8f3c06929a97","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-insert-rfid-logs\",\n  \"value\": {\n    \"tid\": \"...\",\n    \"status\": 1,\n    \"category\": 0,\n    \"description\": \"CONTOH\",\n    \"flag_alarm\": 1\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Used to record a scan log entry.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-insert-rfid-logs\",\n  \"statusCode\": 1,\n  \"Message\": \"success\",\n  \"value\": {\n    \"id\": 0,\n    \"tid\": \"...\",\n    \"epc\": \"\",\n    \"status\": 1,\n    \"created_time\": \"2026-06-26T14:47:52.6976076+07:00\",\n    \"description\": \"CONTOH\",\n    \"category\": 0,\n    \"flag_alarm\": 1,\n    \"ant\": 1,\n    \"no_sku\": \"\",\n    \"remark\": \"\"\n  }\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"79ae235a-650a-4dba-8e63-8f3c06929a97"},{"name":"4. db-storage-insert-rfid-list-bulk","id":"2429487a-0439-4742-97b9-6678230a9800","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-insert-rfid-list-bulk\",\n  \"value\": [\n    {\n      \"tid\": \"E2801170200014B772D70B5B\",\n      \"status\": 1,\n      \"category\": 0,\n      \"description\": \"BOX A\",\n      \"flag_alarm\": 0\n    },\n    {\n      \"tid\": \"E2801170200012EEE06C0B4BFD9001220D0A\",\n      \"status\": 1,\n      \"category\": 0,\n      \"description\": \"BOX B\",\n      \"flag_alarm\": 1\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Saves several RFID tags into the database at once (array of values).</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-insert-rfid-list-bulk\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-insert-rfid-list-bulk\",\n  \"statusCode\": 0,\n  \"message\": \"error: insert data!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"2429487a-0439-4742-97b9-6678230a9800"},{"name":"5. db-storage-update-rfid-list","id":"5c42905a-e4e7-4b00-8888-0a06aa028669","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-update-rfid-list\",\n  \"value\": {\n    \"tid\": \"E2801170200014D772D70B5B\",\n    \"description\": \"Update123\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Updates the description, flag_status, or status of an already-registered tid.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-update-rfid-list\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-update-rfid-list\",\n  \"statusCode\": 0,\n  \"message\": \"error: update data!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"5c42905a-e4e7-4b00-8888-0a06aa028669"},{"name":"6. db-storage-update-rfid-list-bulk","id":"269efba1-5f40-443a-9668-df5585529fb7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-update-rfid-list-bulk\",\n  \"value\": [\n    {\n      \"tid\": \"E2801170200014D772D70B5B\",\n      \"status\": 2\n    },\n    {\n      \"tid\": \"E2801170200012EEE06C0B4BFD9001220D0A\",\n      \"status\": 0\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Used to change the status or description of a batch of tag records.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-update-rfid-list-bulk\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-update-rfid-list-bulk\",\n  \"statusCode\": 0,\n  \"message\": \"error: update data!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"269efba1-5f40-443a-9668-df5585529fb7"},{"name":"7. db-storage-update-rfid-list-by-sku","id":"d10ee8de-4c68-4970-a772-439d09d42676","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-update-rfid-list-by-sku\",\n  \"value\": {\n    \"no_sku\": \"KACAMATA\",\n    \"category\": 0,\n    \"flag_alarm\": 0,\n    \"description\": \"CONTOH\",\n    \"status\": 0\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Updates a tag's attributes using no_sku as the reference key.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-update-rfid-list-by-sku\",\n  \"statusCode\": 1,\n  \"message\": \"success\",\n  \"value\": {\n    \"no_sku\": \"KACAMATA\",\n    \"category\": 0,\n    \"flag_alarm\": 0,\n    \"description\": \"CONTOH\",\n    \"status\": 0\n  }\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-update-rfid-list-by-sku\",\n  \"statusCode\": 0,\n  \"message\": \"error: update data\",\n  \"value\": {\n    \"no_sku\": \"567892\",\n    \"category\": 0,\n    \"flag_alarm\": 0,\n    \"description\": \"CONTOH\",\n    \"status\": 0\n  }\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"d10ee8de-4c68-4970-a772-439d09d42676"},{"name":"8. db-storage-remove-rfid-list","id":"30767ac8-f1fc-46ac-a57e-49021d47e87d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-remove-rfid-list\",\n  \"value\": {\n    \"tid\": \"E2801170200014D772D70B5B\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Deletes a single record from the database.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-remove-rfid-list\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-remove-rfid-list\",\n  \"statusCode\": 0,\n  \"message\": \"error remove data!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"30767ac8-f1fc-46ac-a57e-49021d47e87d"},{"name":"9. db-storage-get-rfid-list-by-sku","id":"47670044-8471-4ec6-aff2-45d195fc1f2e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-update-rfid-list-by-sku\",\n  \"value\": {\n    \"no_sku\": \"567892\",\n    \"category\": 0,\n    \"flag_alarm\": 0,\n    \"description\": \"1234567\",\n    \"status\": 0\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Retrieves registered RFID tag data by SKU. status, category, no_sku, flag_alarm and description are all compulsory fields.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-update-rfid-list-by-sku\",\n  \"statusCode\": 1,\n  \"message\": \"success\",\n  \"value\": {\n    \"no_sku\": \"567892\",\n    \"category\": 0,\n    \"flag_alarm\": 0,\n    \"description\": \"1234567\",\n    \"status\": 0\n  }\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-update-rfid-list-by-sku\",\n  \"statusCode\": 0,\n  \"message\": \"error: update data\",\n  \"value\": {\n    \"no_sku\": \"567892\",\n    \"category\": 0,\n    \"flag_alarm\": 0,\n    \"description\": \"1234567\",\n    \"status\": 0\n  }\n}\n</code></pre>\n<blockquote>\n<p>⚠️ <strong>Note:</strong> The source guide titles this section 'db-storage-get-rfid-list-by-sku' (section 9) but the example payload/response in the PDF literally uses the event name 'db-storage-update-rfid-list-by-sku' — this looks like a copy/paste error in the source document (it duplicates item 7). The payload above is transcribed exactly as printed; please confirm the correct event name with the DERAS/backend team before relying on it.</p>\n</blockquote>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"47670044-8471-4ec6-aff2-45d195fc1f2e"},{"name":"10. db-storage-get-rfid-list-by-tid","id":"cb502d00-7cda-4402-bac1-1c2e67bd556b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-get-rfid-by-tid\",\n  \"value\": {\n    \"tid\": \"E28011B02000BA9E6B3403C1\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Searches for and returns the full record of a specific RFID tag by its TID. The 'tid' field is compulsory.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-get-rfid-by-tid\",\n  \"statusCode\": 1,\n  \"Message\": \"success\",\n  \"value\": {\n    \"id\": 249,\n    \"tid\": \"E28011B02000BA9E6B3403C1\",\n    \"epc\": \"74E42F4CB7DEDD9749B5581693627057\",\n    \"status\": 1,\n    \"created_time\": \"2026-06-10T13:58:38.4523117\",\n    \"description\": \"500000\",\n    \"category\": 0,\n    \"flag_alarm\": 1,\n    \"no_sku\": \"Baju\"\n  }\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-get-rfid-by-tid\",\n  \"statusCode\": 0,\n  \"message\": \"error: data not found\",\n  \"value\": {\n    \"tid\": \"E28011B02000BA9E6B3403C2\",\n    \"epc\": \"\",\n    \"status\": 1,\n    \"category\": 1,\n    \"description\": \"\",\n    \"flag_alarm\": 1,\n    \"created_time\": \"2026-06-15T12:10:52.9892303+07:00\",\n    \"no_sku\": \"\"\n  }\n}\n</code></pre>\n<blockquote>\n<p>⚠️ <strong>Note:</strong> Section header in the PDF reads 'db-storage-get-rfid-list-by-tid', while the actual event name used in the JSON payload/response examples is 'db-storage-get-rfid-by-tid' (no '-list'). Transcribed exactly as printed — verify the exact event string with the backend before using in production.</p>\n</blockquote>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"cb502d00-7cda-4402-bac1-1c2e67bd556b"},{"name":"11. db-storage-remove-rfid-list-bulk","id":"42dcd587-89c3-4dbc-91ac-94132397d6f0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"db-storage-remove-rfid-list-bulk\",\n  \"value\": [\n    {\n      \"tid\": \"E2801170200012E672D50B5B\"\n    },\n    {\n      \"tid\": \"E28011702000005672D20B5B\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Deletes several RFID tags from the database at once.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-remove-rfid-list-bulk\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-remove-rfid-list-bulk\",\n  \"statusCode\": 0,\n  \"message\": \"error remove data!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"42dcd587-89c3-4dbc-91ac-94132397d6f0"}],"id":"a855391e-ca87-45c4-957a-273adf1e96d7","description":"<p>Read/write the RFID tag records stored in the DERAS Box's embedded local database.</p>\n","_postman_id":"a855391e-ca87-45c4-957a-273adf1e96d7"},{"name":"4. Reporting & Metadata","item":[{"name":"1. service-api-start-track","id":"e0bb0cb4-4d1a-4d82-b716-1f084073c187","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"service-api-start-track\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Enables the antenna and starts the real-time / continuous RFID tag tracking service.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-service-api-start-track\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n{\n  \"event\": \"response-scan-rfid-on\",\n  \"statusCode\": 1,\n  \"message\": \"success!\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-service-api-start-track\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"e0bb0cb4-4d1a-4d82-b716-1f084073c187"},{"name":"2. service-api-stop-track","id":"7d433f0a-45d7-4665-a451-57835d546d99","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"service-api-stop-track\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Stops real-time RFID tracking.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-service-api-stop-track\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n{\n  \"event\": \"response-scan-rfid-off\",\n  \"statusCode\": 1,\n  \"message\": \"success!\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-service-api-stop-track\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"7d433f0a-45d7-4665-a451-57835d546d99"},{"name":"3. service-api-start-loss-prevention","id":"ea3d35f1-36ea-4c60-a056-98069109d4d8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"service-api-start-loss-prevention\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Activates security / Loss Prevention mode: the system starts scanning and monitoring the alarm/trigger zone to prevent item loss.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-service-api-start-loss-prevention\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n{\n  \"event\": \"response-scan-rfid-on\",\n  \"statusCode\": 1,\n  \"message\": \"success!\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-service-api-start-loss-prevention\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"ea3d35f1-36ea-4c60-a056-98069109d4d8"},{"name":"4. service-api-stop-loss-prevention","id":"f5a171f8-2da3-45c2-ae63-2576156a4ceb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"service-api-stop-loss-prevention\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Stops the loss-prevention service logic.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-service-api-stop-loss-prevention\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n{\n  \"event\": \"response-scan-rfid-off\",\n  \"statusCode\": 1,\n  \"message\": \"success!\"\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-service-api-stop-loss-prevention\",\n  \"statusCode\": 0,\n  \"message\": \"Device is not connected!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"f5a171f8-2da3-45c2-ae63-2576156a4ceb"},{"name":"5. local-get-alias-antenna","id":"d8870fa6-af41-4e8c-b7e4-dbf06788b7a1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"local-get-alias-antenna\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Retrieves the list of antenna aliases; this defines zones to make data filtering easier.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-local-alias-antenna\",\n  \"statusCode\": 1,\n  \"message\": \"success\",\n  \"value\": [\n    {\n      \"ant\": 1,\n      \"alias\": \"WAREHOUSE1\"\n    },\n    {\n      \"ant\": 2,\n      \"alias\": \"WAREHOUSE2\"\n    },\n    {\n      \"ant\": 3,\n      \"alias\": \"WAREHOUSE3\"\n    },\n    {\n      \"ant\": 4,\n      \"alias\": \"WAREHOUSE4\"\n    },\n    {\n      \"ant\": 5,\n      \"alias\": \"anten5\"\n    },\n    {\n      \"ant\": 6,\n      \"alias\": \"anten6\"\n    },\n    {\n      \"ant\": 7,\n      \"alias\": \"anten7\"\n    },\n    {\n      \"ant\": 8,\n      \"alias\": \"anten8\"\n    }\n  ]\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-local-get-alias-antenna\",\n  \"statusCode\": 0,\n  \"message\": \"error: Data not found!\"\n}\n</code></pre>\n<blockquote>\n<p>⚠️ <strong>Note:</strong> The success example in the PDF uses event name 'response-local-alias-antenna' while the error example uses 'response-local-get-alias-antenna'. Both are transcribed exactly as printed in the source document.</p>\n</blockquote>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"d8870fa6-af41-4e8c-b7e4-dbf06788b7a1"},{"name":"6. report-logs","id":"7aebca11-ac6e-4482-9ace-f53dc48cb49b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"report-logs\"\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Pulls / retrieves the scan activity history report previously recorded and stored in the DERAS Box's memory.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-report-logs\",\n  \"statusCode\": 1,\n  \"Message\": \"success\",\n  \"Value\": {\n    \"skip\": 0,\n    \"limit\": 1000,\n    \"total\": 8112,\n    \"Data\": [\n      {\n        \"id\": 0,\n        \"tid\": \"...\",\n        \"epc\": \"\",\n        \"status\": 1,\n        \"created_time\": \"2026-06-29T09:29:14.4278854\",\n        \"description\": \"CONTOH\",\n        \"Category\": 0,\n        \"Flag_alarm\": 1,\n        \"Ant\": 1,\n        \"Alias_antenna\": \"\",\n        \"no_sku\": \"\",\n        \"remark\": \"\"\n      }\n    ]\n  }\n}\n</code></pre>\n<p><strong>Error Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-report-logs\",\n  \"statusCode\": 0,\n  \"message\": \"error: Data not found!\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"7aebca11-ac6e-4482-9ace-f53dc48cb49b"},{"name":"7. set-rfid-power-ip  (Experimental)","id":"ab3f403f-d29b-4bd1-bcb7-a0c04fb439f1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"event\": \"set-rfid-power-ip\",\n  \"value\": 30,\n  \"ant\": 1\n}","options":{"raw":{"language":"json"}}},"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Sets the RFID reader power level for a specific antenna.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-set-rfid-power-ip\",\n  \"statusCode\": 1,\n  \"message\": \"success\"\n}\n</code></pre>\n<blockquote>\n<p>⚠️ <strong>Note:</strong> Marked in the source document as an <em>Experimental Feature — No need to be included in Production Yet</em>.</p>\n</blockquote>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"ab3f403f-d29b-4bd1-bcb7-a0c04fb439f1"}],"id":"a4167abb-3e6d-415b-9a3b-c5cdc12c7a94","description":"<p>Start/stop tracking &amp; loss-prevention services, antenna aliases, and activity log reports.</p>\n","_postman_id":"a4167abb-3e6d-415b-9a3b-c5cdc12c7a94"},{"name":"5. Server-Initiated / Streaming Events (reference only)","item":[{"name":"scan-rfid-result (pushed while scanning is on)","id":"67499df8-1577-4384-8fd3-d20532d8e9f7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Not something you send. Once scanning is active (after scan-rfid-on / service-api-start-track / service-api-start-loss-prevention), every detected tag is streamed to the client on the SAME open connection via this event.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"scan-rfid-result\",\n  \"type\": 1,\n  \"data\": \"64D99DF0FECABE275F89B617A7D44606\",\n  \"data_tid\": \"E28011702000005672D20B5B\",\n  \"pc\": null,\n  \"user\": \"\",\n  \"ant\": \"1\",\n  \"rssi\": \"-50,7.0\",\n  \"sensor\": null,\n  \"rfid_valid\": \"1\"\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"67499df8-1577-4384-8fd3-d20532d8e9f7"},{"name":"response-db-storage-rfid-list-check (pushed during Start Track / Scanning)","id":"c8ec3581-53b1-4ad6-a196-6553786375b2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"url":"ws://192.168.88.120:3030","description":"<p><strong>Purpose:</strong> Not something you send. Confirms whether a scanned tag is already registered in the local DB, pushed automatically during service-api-start-track or normal scanning.</p>\n<p><strong>How to use in Postman:</strong> open a WebSocket request (New &gt; WebSocket), connect to <code>ws://192.168.88.120:3030</code>, copy the JSON from this request's Body tab, paste it into the message composer, and send.</p>\n<p><strong>Success Response:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"event\": \"response-db-storage-rfid-list-check\",\n  \"statusCode\": 1,\n  \"message\": \"success\",\n  \"value\": {\n    \"id\": 0,\n    \"tid\": \"E28011702000148DC2150B49\",\n    \"epc\": \"15ABEBCF40DEC5E57D59561944BDCB0C\",\n    \"Status\": 1,\n    \"created_time\": \"2026-06-09T15:12:55.7536577\",\n    \"description\": \"Bj\",\n    \"Category\": 0,\n    \"Flag_alarm\": 1,\n    \"ant\": 3,\n    \"alias_antenna\": \"WAREHOUSE3\",\n    \"no_sku\": \"Pegadaian\",\n    \"remark\": \"TRACK\"\n  }\n}\n</code></pre>\n","urlObject":{"host":["ws://192.168.88.120:3030"],"query":[],"variable":[]}},"response":[],"_postman_id":"c8ec3581-53b1-4ad6-a196-6553786375b2"}],"id":"580fc080-ab92-4a92-bbee-bb091b828f79","description":"<p>These events are pushed BY the DERAS Box on an already-open connection — there is nothing to send. Kept here purely so you know what to expect in the WebSocket message log.</p>\n","_postman_id":"580fc080-ab92-4a92-bbee-bb091b828f79"}],"variable":[{"key":"deras_box_ip","value":"192.168.88.120"},{"key":"ws_port","value":"3030"},{"key":"ws_url","value":"ws://192.168.88.120:3030"}]}