{"info":{"_postman_id":"eeefdacd-37a6-47e4-9ab3-5ac5142b5380","name":"XvisionCloud API","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"39115994","collectionId":"eeefdacd-37a6-47e4-9ab3-5ac5142b5380","publishedId":"2sBXwqsWTh","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-06-09T07:45:16.000Z"},"item":[{"name":"General Info","item":[{"name":"Authentication","item":[],"id":"728bdc00-9dc8-4aae-b8a4-503dbc1e0592","description":"<p><em>Xvisioncloud API access is secured via authentication using a unique API Key and Token pair. All requests to the platform must include both the API Key and Token to authenticate.</em></p>\n<p><em>Ensure that both the API-Key and Authorization token headers are populated in every HTTP request to successfully interact with the API.</em></p>\n","_postman_id":"728bdc00-9dc8-4aae-b8a4-503dbc1e0592"},{"name":"General terminology","item":[],"id":"0368c219-700f-42be-8319-176c2f36871c","description":"<p><em>Tables below outline the definitions of the terms (or parameters) utilized in Xvisioncloud's communication</em></p>\n<h1 id=\"event-types\">Event Types</h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Event Name</strong></th>\n<th><strong>Definition</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>DeviceOnline</em></td>\n<td>Device is connected to network</td>\n</tr>\n<tr>\n<td><em>DeviceOffline</em></td>\n<td>Device disconnected</td>\n</tr>\n<tr>\n<td><em>DeviceReboot</em></td>\n<td>Device was rebooted</td>\n</tr>\n<tr>\n<td><em>DataUpdate</em></td>\n<td>Device Data uploaded to cloud</td>\n</tr>\n<tr>\n<td><em>LiveUpdate</em></td>\n<td>LIve location update</td>\n</tr>\n<tr>\n<td><em>GsensorCalibrated</em></td>\n<td>G-sensor calibrated executed  <br /><em>(for supported devices)</em></td>\n</tr>\n<tr>\n<td><em>IgnitionOn</em></td>\n<td>Ignition On received  <br /><em>(for supported devices)</em></td>\n</tr>\n</tbody>\n</table>\n</div><div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><em>IgnitionOff</em></th>\n<th>Ignition Off received  <br /><em>(for supported devices)</em></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>SettingsUpdate</em></td>\n<td>Device settings have been updated</td>\n</tr>\n<tr>\n<td><em>SettingsUploaded</em></td>\n<td>Device settings uploaded to cloud</td>\n</tr>\n<tr>\n<td><em>StorageFormat</em></td>\n<td>Device storage formated</td>\n</tr>\n<tr>\n<td><em>Media</em></td>\n<td>Media event (Image/Video)</td>\n</tr>\n<tr>\n<td><em>Accelerate</em></td>\n<td>Harsh Acceleration detected  <br /><em>(for supported devices)</em></td>\n</tr>\n</tbody>\n</table>\n</div><div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><em>Brake</em></th>\n<th>Harsh Brake detected  <br /><em>(for supported devices)</em></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><em>Turn</em></td>\n<td>Harsh Turn detected  <br /><em>(for supported devices)</em></td>\n</tr>\n<tr>\n<td><em>SOS</em></td>\n<td>Device emergency button triggered  <br /><em>(for supported devices)</em></td>\n</tr>\n<tr>\n<td><em>SevereForce</em></td>\n<td>Device high G-sensor force detected  <br /><em>(for supported devices)</em></td>\n</tr>\n<tr>\n<td><em>Impact</em></td>\n<td>Possible impact detected  <br /><em>(for supported devices)</em></td>\n</tr>\n</tbody>\n</table>\n</div><h1 id=\"http-status-codes\">HTTP status codes</h1>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Status code</strong></th>\n<th><strong>Message/JSON Payload</strong></th>\n<th><strong>Definition</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>\"Success\"  <br />optional: payload</td>\n<td><em>Request was successfully executed</em></td>\n</tr>\n<tr>\n<td>400</td>\n<td>Error Message</td>\n<td><em>Request was not executed</em>  <br /><em>(\"Error message\")</em></td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"0368c219-700f-42be-8319-176c2f36871c"}],"id":"c106b90e-d115-46c0-8aab-bbcd9de1173d","description":"<p>XvisionCloud offers a powerful set of RESTful APIs for developers building telematics and IoT-enabled applications. Our platform enables real-time GPS tracking, event monitoring, device management, and media retrieval — all accessible through secure, token-based authentication.</p>\n<p>Designed for performance, reliability, and ease of integration, these APIs support scalable deployments across fleet operations, asset tracking, and custom IoT workflows. Each endpoint delivers structured JSON responses with consistent schemas and clear error handling.</p>\n<p>Use this documentation to explore endpoints, understand data flows, and integrate XvisionCloud services into your application stack with confidence.</p>\n","_postman_id":"c106b90e-d115-46c0-8aab-bbcd9de1173d"},{"name":"User","item":[{"name":"Login","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"access\");\n    pm.expect(json).to.have.property(\"refresh\");\n    pm.expect(json).to.have.property(\"Role\");\n    pm.expect(json).to.have.property(\"UserID\");\n});","var json = pm.response.json();\nif (json[\"UserID\"]) {\n    pm.collectionVariables.set(\"user_id\", json[\"UserID\"]);\n    console.log(\"Saved user_id: \" + json[\"UserID\"]);\n}","pm.test(\"Access token is a non-empty string\", function () {\n    pm.expect(pm.response.json().access).to.be.a(\"string\").and.not.empty;\n});","pm.test(\"Role is a known value\", function () {\n    var known = [\"XADMIN\",\"INT\",\"OADMIN\",\"CADMIN\",\"USER\"];\n    pm.expect(known).to.include(pm.response.json().Role);\n});"],"id":"37074e09-a9a7-4f8a-8bbe-933b724fd79a"}}],"id":"c651a3e5-ec9c-445c-a4eb-6a8b75236b77","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"Email\": \"user@example.com\",\n  \"Password\": \"Password1\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/User/Login","description":"<p>Authenticate and receive access/refresh tokens.</p>\n","urlObject":{"path":["User","Login"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"1cf4fc7f-a4cc-47b6-b1f5-3d3d9b75a6f3","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"access\": \"eyJ...\",\n  \"refresh\": \"eyJ...\",\n  \"TimeZone\": \"America/Chicago\",\n  \"DateTimeFormat\": \"%m/%d/%Y %r\",\n  \"Metric\": 0.6213712,\n  \"Units\": \"mph\",\n  \"Role\": \"OADMIN\",\n  \"UserID\": \"\",\n  \"CustomerLogo\": null,\n  \"CustomerIcon\": null,\n  \"CustomerData\": null\n}"},{"id":"a0717f85-fec0-483c-bb24-9951b41be5ac","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide email and password.\"\n}"}],"_postman_id":"c651a3e5-ec9c-445c-a4eb-6a8b75236b77"},{"name":"Refresh Tokens","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"access\");\n    pm.expect(json).to.have.property(\"refresh\");\n});","pm.test(\"New access token differs from request header\", function () {\n    pm.expect(pm.response.json().access).to.be.a(\"string\").and.not.empty;\n});"],"id":"2ef9cfda-7894-4f76-ac89-29e0549d8fc2"}}],"id":"00aff9c6-a2bb-447b-8d49-b9f64bd3ad2e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/User/RefreshTokens","description":"<p>Exchange a refresh token for a new access/refresh pair.</p>\n","urlObject":{"path":["User","RefreshTokens"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"2a9ffd00-e52f-4044-a6c5-2949dba4e31c","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"access\": \"eyJ...\",\n  \"refresh\": \"eyJ...\"\n}"},{"id":"283a11b6-a27d-4b8d-a34c-b1957bcf39cc","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Token expired.\"\n}"}],"_postman_id":"00aff9c6-a2bb-447b-8d49-b9f64bd3ad2e"},{"name":"Get Users","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"UserID\");\n    pm.expect(item).to.have.property(\"Email\");\n    pm.expect(item).to.have.property(\"Name\");\n    pm.expect(item).to.have.property(\"Role\");\n    pm.expect(item).to.have.property(\"CustomerID\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"UserID\"]) {\n    pm.collectionVariables.set(\"user_id\", arr[0][\"UserID\"]);\n    console.log(\"Saved user_id: \" + arr[0][\"UserID\"]);\n}",""],"id":"5c0d5950-6169-4949-a81e-438d644b02cd"}}],"id":"3c71d815-42a7-470b-b837-ac1935efc946","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/User/GetUsers?UserID=","description":"<p>List users accessible to the current user.</p>\n","urlObject":{"path":["User","GetUsers"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Optional – filter by specific user</p>\n","type":"text/plain"},"key":"UserID","value":""}],"variable":[]}},"response":[{"id":"0e0eaabd-c0b2-4d42-9039-bfbec8c7bf69","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"CreatedOn\": \"2024-01-15 10:00:00\",\n    \"Active\": 1,\n    \"Role\": \"CADMIN\",\n    \"UserID\": \"\",\n    \"Email\": \"user@example.com\",\n    \"Name\": \"John Doe\",\n    \"Phone\": \"+1234567890\",\n    \"CustomerName\": \"Acme Corp\",\n    \"CustomerID\": \"\"\n  }\n]"},{"id":"f32f05ab-720c-4c2b-9ce8-5e96a59c045a","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"3c71d815-42a7-470b-b837-ac1935efc946"},{"name":"New User","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});","pm.test(\"Success message returned\", function () {\n    pm.expect(pm.response.json().Message).to.eql(\"Success\");\n});",""],"id":"73b0aa65-a7cc-451c-8fab-a2f0a15943a0"}}],"id":"73b738d8-cbcd-4290-b8f6-a09d9f16e763","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"Email\": \"newuser@example.com\",\n  \"Password\": \"Secure1pass\",\n  \"Name\": \"Jane Smith\",\n  \"CustomerID\": \"\",\n  \"Role\": \"CADMIN\",\n  \"TimeZone\": \"America/New_York\",\n  \"DateFormat\": \"%Y-%m-%d %H:%i:%S\",\n  \"Metric\": \"Metric\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/User/NewUser","description":"<p>Create a new user account.</p>\n","urlObject":{"path":["User","NewUser"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"10dbec67-232e-4f45-a970-1f3e67ddab72","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"46c88a63-ca40-462e-a240-8b77c805a803","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Email is missing.\"\n}"}],"_postman_id":"73b738d8-cbcd-4290-b8f6-a09d9f16e763"},{"name":"Edit User","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"ee546921-7f19-4b6e-b0b8-ed8817092637"}}],"id":"c292baac-a716-40df-a307-5045e7a31eca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"UserID\": \"\",\n  \"CustomerID\": \"\",\n  \"Name\": \"Jane Updated\",\n  \"Role\": \"CADMIN\",\n  \"Active\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/User/EditUser","description":"<p>Update an existing user's details.</p>\n","urlObject":{"path":["User","EditUser"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"31b6502f-f586-479b-8c36-008a03c7c86a","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"3821b37b-97c4-4e1e-8aa8-bbaa417e15bd","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide UserID.\"\n}"}],"_postman_id":"c292baac-a716-40df-a307-5045e7a31eca"},{"name":"Delete User","event":[{"listen":"test","script":{"id":"b441aaa5-2267-4677-b7fd-48b02969a6b2","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {","    pm.response.to.have.header(\"Content-Type\");","    pm.response.to.be.json;","});","pm.test(\"Response time under 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","pm.test(\"Response has Code field\", function () {","    var json = pm.response.json();","    pm.expect(json).to.have.property(\"Code\");","});",""],"type":"text/javascript","packages":{},"requests":{}}}],"id":"35003d41-9bea-4032-bc74-20735959fec8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"UserID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/User/DeleteUser","description":"<p>Delete user, after deletion user is removed from login permissions</p>\n","urlObject":{"path":["User","DeleteUser"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"7e585168-9f21-442b-b84f-411b66bc283e","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"efccc1b9-99ee-4fbc-941c-e80a3b31f97e","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide UserID.\"\n}"}],"_postman_id":"35003d41-9bea-4032-bc74-20735959fec8"},{"name":"Get User Roles","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an object\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"object\");\n});","pm.test(\"Response contains at least one role\", function () {\n    pm.expect(Object.keys(pm.response.json()).length).to.be.above(0);\n});"],"id":"0eae1777-44da-4a08-97ea-4d1482baeba2"}}],"id":"77ce72fd-b95c-45f0-b441-bf4d73309f52","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/User/GetUserRoles?CustomerID=","description":"<p>List available user roles.</p>\n","urlObject":{"path":["User","GetUserRoles"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Optional – filter roles by customer type</p>\n","type":"text/plain"},"key":"CustomerID","value":""}],"variable":[]}},"response":[{"id":"77e6d46f-b027-4d3d-8084-8993c59b78b9","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"XADMIN\": \"Super Admin\",\n  \"INT\": \"Integrator\",\n  \"OADMIN\": \"Org Admin\",\n  \"CADMIN\": \"Customer Admin\",\n  \"USER\": \"User\"\n}"},{"id":"be607b98-fc04-4dda-a311-d6f2b881ca4a","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"77ce72fd-b95c-45f0-b441-bf4d73309f52"},{"name":"Get User Activity","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"UserName\");\n    pm.expect(item).to.have.property(\"APIcall\");\n    pm.expect(item).to.have.property(\"CreatedOn\");\n    }\n});"],"id":"9fde8a70-c54c-46f3-8b58-9b1f71afa660"}}],"id":"7147c639-629d-4100-8fa3-5f2d2d19441b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/User/GetUserActivity?CustomerID=&FromDateTime=2024-01-01 00:00:00&ToDateTime=2024-01-31 23:59:59","description":"<p>Retrieve user API activity log.</p>\n","urlObject":{"path":["User","GetUserActivity"],"host":["https://api.example.com"],"query":[{"key":"CustomerID","value":""},{"key":"FromDateTime","value":"2024-01-01 00:00:00"},{"key":"ToDateTime","value":"2024-01-31 23:59:59"}],"variable":[]}},"response":[{"id":"a6d62db3-2f63-4a67-a637-d16ecb1a31f0","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"UserName\": \"John Doe\",\n    \"UserRole\": \"Org Admin\",\n    \"CreatedOn\": \"2024-01-15 12:00:00\",\n    \"APIcall\": \"Device/GetDevices\",\n    \"CustomerName\": \"Acme Corp\",\n    \"Parameters\": \"{}\",\n    \"Body\": \"{}\"\n  }\n]"},{"id":"51ee8591-b74d-423b-a3ce-68d950a0f09c","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"7147c639-629d-4100-8fa3-5f2d2d19441b"}],"id":"246f2aae-8d5f-4483-a20a-c89800cdac63","_postman_id":"246f2aae-8d5f-4483-a20a-c89800cdac63","description":""},{"name":"Customer","item":[{"name":"Get Customers","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"CustomerID\");\n    pm.expect(item).to.have.property(\"CustomerName\");\n    pm.expect(item).to.have.property(\"CustomerType\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"CustomerID\"]) {\n    pm.collectionVariables.set(\"customer_id\", arr[0][\"CustomerID\"]);\n    console.log(\"Saved customer_id: \" + arr[0][\"CustomerID\"]);\n}","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"ParentCustomerID\"]) {\n    pm.collectionVariables.set(\"parent_customer_id\", arr[0][\"ParentCustomerID\"]);\n    console.log(\"Saved parent_customer_id: \" + arr[0][\"ParentCustomerID\"]);\n}"],"id":"fb01624c-1394-4dbd-8de5-6912338ec9eb"}}],"id":"a60e654c-9fbf-4c26-a3ec-b57b261804c9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Customer/GetCustomers?CustomerID=&ParentCustomerID=","description":"<p>List customers accessible to the current user.</p>\n","urlObject":{"path":["Customer","GetCustomers"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Optional filter</p>\n","type":"text/plain"},"key":"CustomerID","value":""},{"description":{"content":"<p>Optional parent filter</p>\n","type":"text/plain"},"key":"ParentCustomerID","value":""}],"variable":[]}},"response":[{"id":"7dfbf624-de7c-4401-9e4b-0cb653495ad5","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"CustomerName\": \"Acme Corp\",\n    \"CustomerType\": \"ORG\",\n    \"CustomerTypeName\": \"Organization\",\n    \"CreatedOn\": \"2023-06-01 00:00:00\",\n    \"CustomerID\": \"\",\n    \"Description\": \"Main org\",\n    \"LogoPath\": \"https://cdn.example.com/logo.png\",\n    \"IconPath\": \"https://cdn.example.com/icon.png\",\n    \"CustomerURL\": \"https://acme.example.com\",\n    \"XvisionURL\": \"https://xvision.acme.com\",\n    \"ParentCustomerName\": \"Root\",\n    \"ParentCustomerID\": \"\",\n    \"ActiveDevices\": 42\n  }\n]"},{"id":"3524d6dc-a309-4886-9126-d184237cbe85","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"a60e654c-9fbf-4c26-a3ec-b57b261804c9"},{"name":"Get Customer Types","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an object\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"object\");\n});","pm.test(\"Response has at least one customer type\", function () {\n    pm.expect(Object.keys(pm.response.json()).length).to.be.above(0);\n});"],"id":"8840f6e5-446e-4c6c-a2b7-c9bcf8f031b7"}}],"id":"59caec75-5447-4ca3-a550-c8e504c22aea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Customer/GetCustomerTypes","description":"<p>List all available customer types.</p>\n","urlObject":{"path":["Customer","GetCustomerTypes"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"240c9b6f-5670-4983-b126-edbabb6f06a3","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"ORG\": \"Organization\",\n  \"INT\": \"Integrator\",\n  \"RESELLER\": \"Reseller\"\n}"},{"id":"bd838508-70f5-4f56-8c04-d49c9b0e0fc1","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"59caec75-5447-4ca3-a550-c8e504c22aea"},{"name":"New Customer","event":[{"listen":"test","script":{"exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {","    pm.response.to.have.header(\"Content-Type\");","    pm.response.to.be.json;","});","pm.test(\"Response time under 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","pm.test(\"Response has Code field\", function () {","    var json = pm.response.json();","    pm.expect(json).to.have.property(\"Code\");","});",""],"type":"text/javascript","packages":{},"requests":{},"id":"9a1d225f-00c1-46b0-adad-bb3496c9d794"}}],"id":"b3222b64-0f69-4d7d-9fd2-c7b5041638b4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"ParentCustomerID\": \"\",\n  \"CustomerName\": \"New Org\",\n  \"CustomerType\": \"ORG\",\n  \"Description\": \"A new organization\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Customer/NewCustomer","description":"<p>Create a new customer under a parent.</p>\n","urlObject":{"path":["Customer","NewCustomer"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"f4269eb6-6458-4a5a-85cc-8901d4d8247f","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"0e611943-33dc-4ba2-a98c-4b0ed1cec565","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide ParentCustomerID.\"\n}"}],"_postman_id":"b3222b64-0f69-4d7d-9fd2-c7b5041638b4"},{"name":"Edit Customer","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"cab7f7e0-4f6e-45b0-b352-ed799d7e183e"}}],"id":"173b5b4e-7d53-45b3-b0c9-36c576a1eccd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"CustomerID\": \"\",\n  \"CustomerName\": \"Acme Corp Updated\",\n  \"CustomerType\": \"ORG\",\n  \"Description\": \"Updated description\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Customer/EditCustomer","description":"<p>Update an existing customer's details.</p>\n","urlObject":{"path":["Customer","EditCustomer"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"5f302242-a4cd-4328-9894-7de6d0692871","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"a42a1f44-fcbb-4305-a004-38e9894e2c43","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide CustomerName.\"\n}"}],"_postman_id":"173b5b4e-7d53-45b3-b0c9-36c576a1eccd"},{"name":"Deactivate Customer","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"e05b9c9b-6d34-4258-a7d5-be59429ed9a5"}}],"id":"3e188825-74e5-48a7-aeb0-f77885289ac8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"CustomerID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Customer/DeactivateCustomer","description":"<p>Deactivate a customer.</p>\n","urlObject":{"path":["Customer","DeactivateCustomer"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"125864d7-f885-425b-b7e2-2e82142fd1c2","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"0ad710ec-34b3-48e7-a1a2-8484fd83cce8","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Pleaase, provide CustomerID.\"\n}"}],"_postman_id":"3e188825-74e5-48a7-aeb0-f77885289ac8"}],"id":"f60b01e4-74b8-4fc9-8ddd-51c5e8cc5e84","_postman_id":"f60b01e4-74b8-4fc9-8ddd-51c5e8cc5e84","description":""},{"name":"Device","item":[{"name":"Get Devices","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"ObjectID\");\n    pm.expect(item).to.have.property(\"IMEI\");\n    pm.expect(item).to.have.property(\"DeviceName\");\n    pm.expect(item).to.have.property(\"IsOnline\");\n    pm.expect(item).to.have.property(\"CustomerID\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"ObjectID\"]) {\n    pm.collectionVariables.set(\"object_id\", arr[0][\"ObjectID\"]);\n    console.log(\"Saved object_id: \" + arr[0][\"ObjectID\"]);\n}","pm.test(\"Speed is a number\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) pm.expect(arr[0].Speed).to.be.a(\"number\");\n});"],"id":"8d524cf6-f307-457a-8c70-27fe5840c77a"}}],"id":"72467b56-0e55-4124-a565-f8134704c07b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Device/GetDevices?CustomerID=&ObjectID=&DeviceName=&Activated=All","description":"<p>List devices the current user has access to.</p>\n","urlObject":{"path":["Device","GetDevices"],"host":["https://api.example.com"],"query":[{"key":"CustomerID","value":""},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Optional name filter</p>\n","type":"text/plain"},"key":"DeviceName","value":""},{"description":{"content":"<p>Active | Nonactive | All</p>\n","type":"text/plain"},"key":"Activated","value":"All"}],"variable":[]}},"response":[{"id":"98674df0-9fbc-44bb-9b8b-b51274a24034","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"DeviceName\": \"Truck 01\",\n    \"IMEI\": \"123456789012345\",\n    \"ObjectID\": \"\",\n    \"IsOnline\": 1,\n    \"Ignition\": 1,\n    \"CustomerName\": \"Acme Corp\",\n    \"CustomerID\": \"\",\n    \"Latitude\": 41.8781,\n    \"Longitude\": -87.6298,\n    \"Speed\": 35.5,\n    \"Address\": \"123 Main St, Chicago, IL\",\n    \"LastContact\": \"01/15/2024 02:30:00 PM\",\n    \"VehicleStatus\": \"Moving\",\n    \"Activated\": 1,\n    \"Model\": \"XD200\",\n    \"DeviceType\": \"DashCam\",\n    \"DoSnapshot\": 1,\n    \"DoVideo\": 1,\n    \"DoLivestream\": 1,\n    \"MediaSupport\": 1,\n    \"Channels\": \"1,2,3,4\"\n  }\n]"},{"id":"6fd641f1-5c14-4c7d-ac52-5d8cdd0cfc4c","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"72467b56-0e55-4124-a565-f8134704c07b"},{"name":"Get Device","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"ObjectID\");\n    pm.expect(json).to.have.property(\"IMEI\");\n    pm.expect(json).to.have.property(\"DeviceName\");\n    pm.expect(json).to.have.property(\"IsOnline\");\n    pm.expect(json).to.have.property(\"VehicleStatus\");\n    pm.expect(json).to.have.property(\"Timeline\");\n});","pm.test(\"Timeline has DayStart, DayEnd and Chunks\", function () {\n    var tl = pm.response.json().Timeline;\n    pm.expect(tl).to.have.property(\"DayStart\");\n    pm.expect(tl).to.have.property(\"DayEnd\");\n    pm.expect(tl).to.have.property(\"Chunks\");\n});","pm.test(\"VehicleStatus is a known value\", function () {\n    var known = [\"Moving\",\"Idle\",\"Parked\"];\n    pm.expect(known).to.include(pm.response.json().VehicleStatus);\n});"],"id":"1be80939-55ed-4322-9d2e-2c18526c9d3b"}}],"id":"0cc3d41a-d7e2-422f-915a-bc9536a96d33","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Device/GetDevice?ObjectID=&SelectedDay=2024-01-15","description":"<p>Get detailed info and timeline for a single device.</p>\n","urlObject":{"path":["Device","GetDevice"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Optional YYYY-MM-DD</p>\n","type":"text/plain"},"key":"SelectedDay","value":"2024-01-15"}],"variable":[]}},"response":[{"id":"2c7e3aad-7ad5-44e8-bdfc-0714e7460cfd","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"DeviceName\": \"Truck 01\",\n  \"IMEI\": \"123456789012345\",\n  \"ObjectID\": \"\",\n  \"IsOnline\": 1,\n  \"Ignition\": 0,\n  \"Speed\": 0.0,\n  \"Latitude\": 41.8781,\n  \"Longitude\": -87.6298,\n  \"Address\": \"123 Main St, Chicago, IL\",\n  \"VehicleStatus\": \"Parked\",\n  \"VIN\": \"1HGBH41JXMN109186\",\n  \"FirmwareVersion\": \"2.1.4\",\n  \"ICCID\": \"89014103211118510720\",\n  \"Guard\": 0,\n  \"Timeline\": {\n    \"DayStart\": 1705276800,\n    \"DayEnd\": 1705363200,\n    \"Chunks\": [\n      {\n        \"Start\": 1705280400,\n        \"End\": 1705309200\n      }\n    ]\n  },\n  \"ExtraData\": {\n    \"Odometer\": \"12500.3 km\",\n    \"FuelLevel\": \"75 %\"\n  }\n}"},{"id":"9ca55ff7-27ab-4740-a447-04f6bf227904","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Object not found.\"\n}"}],"_postman_id":"0cc3d41a-d7e2-422f-915a-bc9536a96d33"},{"name":"Get Models","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is array or object\", function () {\n    var r = pm.response.json();\n    pm.expect([\"array\",\"object\"]).to.include(typeof r === \"object\" ? (Array.isArray(r) ? \"array\" : \"object\") : typeof r);\n});"],"id":"44a196f9-eb0f-4100-a639-004101fd7305"}}],"id":"ca51179c-b2ba-4657-8de0-e128b21e81fb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Device/GetModels?TypesOnly=1","description":"<p>List device models or types.</p>\n","urlObject":{"path":["Device","GetModels"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Set to 1 to return device types only</p>\n","type":"text/plain"},"key":"TypesOnly","value":"1"}],"variable":[]}},"response":[{"id":"e73ac458-3ea8-4aed-acac-0ecdadcfb8db","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"Model\": \"XD200\",\n    \"DeviceType\": \"DashCam\",\n    \"Features\": 30\n  }\n]"},{"id":"646be8e7-6427-46b9-97b0-dbcb94be6654","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"ca51179c-b2ba-4657-8de0-e128b21e81fb"},{"name":"Edit Device","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"938300f2-c850-4a2d-9045-56403689bfa4"}}],"id":"1d49a821-1543-478b-91ac-014c940df1ff","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"ObjectID\": \"\",\n  \"DeviceName\": \"Truck 01 Renamed\",\n  \"VIN\": \"1HGBH41JXMN109186\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/EditDevice","description":"<p>Update device name or VIN.</p>\n","urlObject":{"path":["Device","EditDevice"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"1f414eea-32f8-4ab2-b108-a08ca7272d7e","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"555c7aaa-65cf-4df2-bfe0-33ac6034290f","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide ObjectID\"\n}"}],"_postman_id":"1d49a821-1543-478b-91ac-014c940df1ff"},{"name":"Activate Devices","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"54fe2e48-4517-4825-a179-34463bfa473f"}}],"id":"ddf7d5b1-d7a2-4d99-a448-9c7ae32c83f0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"CustomerID\": \"\",\n  \"Devices\": [\n    {\n      \"IMEI\": \"123456789012345\",\n      \"DeviceName\": \"Truck 01\",\n      \"VIN\": \"1HGBH41JXMN109186\",\n      \"VehicleClass\": 2\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/ActivateDevices","description":"<p>Assign devices to a customer.</p>\n","urlObject":{"path":["Device","ActivateDevices"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"c18d5043-4299-461f-8ffc-1dbdee33691c","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"358f8d72-c3a1-44b3-bfa7-f5bd3a625407","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"No devices provided.\"\n}"}],"_postman_id":"ddf7d5b1-d7a2-4d99-a448-9c7ae32c83f0"},{"name":"Deactivate Devices","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"66853939-1788-4a60-9f90-f962f8b64e29"}}],"id":"2ce8dd9c-607c-4fb6-9349-2da1e0e6b072","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"CustomerID\": \"\",\n  \"Devices\": [\n    \"\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/DeactivateDevices","description":"<p>Deactivate devices and remove from active fleet. Devices must be a list of ObjectID strings (not dicts).</p>\n","urlObject":{"path":["Device","DeactivateDevices"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"87e3a05b-977a-40d9-bb9d-69176226eab4","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"df23edfb-99e5-4766-ac5c-c17797461d30","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"No devices provided.\"\n}"}],"_postman_id":"2ce8dd9c-607c-4fb6-9349-2da1e0e6b072"},{"name":"Release Devices","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"4fb57b6a-2e4d-4e11-bab2-a760ece33c92"}}],"id":"b892fce3-6564-40a7-95e1-6c7fd194675a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"CustomerID\": \"\",\n  \"Devices\": [\n    {\n      \"IMEI\": \"123456789012345\",\n      \"ObjectID\": \"\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/ReleaseDevices","description":"<p>Release deactivated devices back to inventory.</p>\n","urlObject":{"path":["Device","ReleaseDevices"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"68cca64f-6f34-4f67-a568-dd920c9caf2d","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"cc6b312c-964a-4ce0-a8fc-53271e94bf91","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"No devices provided.\"\n}"}],"_postman_id":"b892fce3-6564-40a7-95e1-6c7fd194675a"},{"name":"Move Devices","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"0cc503a8-e20a-4bd8-912d-ddaaa545888e"}}],"id":"cc61851c-8b27-44de-8e69-5276de89f007","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"FromCustomerID\": \"\",\n  \"ToCustomerID\": \"\",\n  \"Objects\": [\n    \"\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/MoveDevices","description":"<p>Move devices from one customer to another.</p>\n","urlObject":{"path":["Device","MoveDevices"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"c4dc1381-63e2-4fc0-9456-8b711f413a48","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"fe78841d-e3ea-4bbf-b606-ccafe649ceb1","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromCustomerID not found.\"\n}"}],"_postman_id":"cc61851c-8b27-44de-8e69-5276de89f007"},{"name":"Reboot","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});","pm.test(\"Command queued or error\", function () {\n    var msg = pm.response.json().Message;\n    pm.expect([\"Command queued.\", \"The command is already queueued.\"]).to.include(msg);\n});"],"id":"d96c0d37-d11c-4aeb-9ece-0d0fd54be89e"}}],"id":"73288cf3-2803-41d8-8ca0-210856eb8f0b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"ObjectID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/Reboot","description":"<p>Queue a reboot command for a device.</p>\n","urlObject":{"path":["Device","Reboot"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"58a7c426-aca6-4eac-a3cc-3e27b8bef2ae","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Command queued.\"\n}"},{"id":"2d4d40b9-39f3-4ae4-831c-7762af636dc8","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"ObjectID or IMEI not provided.\"\n}"}],"_postman_id":"73288cf3-2803-41d8-8ca0-210856eb8f0b"},{"name":"Media Format","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"40a90764-2f6f-4d70-ac8b-b2f7bb892400"}}],"id":"0a94b2f1-e396-43db-bd2b-c363ac8493cc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"ObjectID\": \"\",\n  \"Media\": 2\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/MediaFormat","description":"<p>Queue a media format command (1=EMMC, 2=SD, 3=ALL).</p>\n","urlObject":{"path":["Device","MediaFormat"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"7234102e-11bd-4e71-bb96-5fa57daf222b","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Command queued.\"\n}"},{"id":"6e51f3a8-68be-40a0-a9a5-ddbb74d27a21","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"ObjectID or IMEI not provided.\"\n}"}],"_postman_id":"0a94b2f1-e396-43db-bd2b-c363ac8493cc"},{"name":"Calibrate G-Sensor","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"74b91f2b-5b90-4e5a-a5cc-5b1225061de6"}}],"id":"45415d65-85a3-48f7-bbe5-23b094b04c52","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"ObjectID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/CalibrateGsensor","description":"<p>Queue a G-sensor calibration command.</p>\n","urlObject":{"path":["Device","CalibrateGsensor"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"a9c879e5-fd02-44d2-92a0-eb6d37cd8115","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Command queued.\"\n}"},{"id":"4ff101c0-6a6a-45cf-8479-997708c04b1e","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"ObjectID or IMEI not provided.\"\n}"}],"_postman_id":"45415d65-85a3-48f7-bbe5-23b094b04c52"},{"name":"Clear Command Queue","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"d7e51911-8108-40a4-9b46-54327e0de778"}}],"id":"eba3f35f-c679-45d7-9682-7d0511bef4cd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"ObjectID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/ClearCommandQueue","description":"<p>Cancel all pending commands for a device.</p>\n","urlObject":{"path":["Device","ClearCommandQueue"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"75e3fb30-8343-4316-a9e5-ad038cb0c080","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"e609e344-9eea-4274-a426-11adcf9ec92f","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"ObjectID or IMEI not provided.\"\n}"}],"_postman_id":"eba3f35f-c679-45d7-9682-7d0511bef4cd"},{"name":"Get Guard Params","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Guard params include Off option\", function () {\n    var arr = pm.response.json();\n    var hasOff = arr.some(function(p) { return p.value === 0; });\n    pm.expect(hasOff).to.be.true;\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"value\");\n    pm.expect(item).to.have.property(\"name\");\n    }\n});"],"id":"f2f3783d-0d8a-4375-a867-71788401a6a0"}}],"id":"3c70d1f0-eeb4-419c-b142-72224aaa7f64","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Device/GetGuardParams","description":"<p>Get available guard mode perimeter options.</p>\n","urlObject":{"path":["Device","GetGuardParams"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"2638753b-bfe9-4cc6-bbc2-da8b62c1da19","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"value\": 0,\n    \"name\": \"Off\"\n  },\n  {\n    \"value\": 50,\n    \"name\": \"50 yd\"\n  },\n  {\n    \"value\": 500,\n    \"name\": \"0.3 mi\"\n  },\n  {\n    \"value\": 1000,\n    \"name\": \"0.6 mi\"\n  }\n]"},{"id":"bb159f3d-cd5a-4791-9b9f-034bb40ccfd5","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"3c70d1f0-eeb4-419c-b142-72224aaa7f64"},{"name":"Set Guard Mode","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"b0e10bff-4417-4cbd-b2f7-0dec2acced86"}}],"id":"200004c7-f4d2-4df3-a3d6-a0bbf51b7768","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"ObjectID\": \"\",\n  \"Perimeter\": 500\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/SetGuardMode","description":"<p>Enable or disable guard mode. Perimeter=0 disables it.</p>\n","urlObject":{"path":["Device","SetGuardMode"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"2318f902-f676-4574-b598-f6f1392410c9","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"f4d6b59a-6257-407d-bad3-6502689f355f","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide ObjectID\"\n}"}],"_postman_id":"200004c7-f4d2-4df3-a3d6-a0bbf51b7768"},{"name":"Get Settings","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"85aaddf2-e3f6-4771-a70e-14882b1888dd"}}],"id":"0d91cf71-c445-4e0f-9282-3508df3d493f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"ObjectID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/GetSettings","description":"<p>Queue a GetSettings command to retrieve device config.</p>\n","urlObject":{"path":["Device","GetSettings"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"561e6655-b16f-4f0c-86d4-b8cb85ce1f5a","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Command queued.\"\n}"},{"id":"568427b8-810b-4f6c-985f-e33618039258","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"No IMEI or ObjectID provided.\"\n}"}],"_postman_id":"0d91cf71-c445-4e0f-9282-3508df3d493f"},{"name":"Set Settings","event":[{"listen":"test","script":{"exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {","    pm.response.to.have.header(\"Content-Type\");","    pm.response.to.be.json;","});","pm.test(\"Response time under 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","pm.test(\"Response has Code field\", function () {","    var json = pm.response.json();","    pm.expect(json).to.have.property(\"Code\");","});",""],"type":"text/javascript","packages":{},"requests":{},"id":"d1501b95-de05-4d1f-af69-ad7487e4a8de"}}],"id":"af787fb9-4ac3-4871-9bba-0d5774abb325","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"IMEI\": \"012345678912345\",\n  \"ObjectID\": \"\",\n  \"Audio\": 1,\n  \"VideoQuality\": 2,\n  \"PowerType\": 6,\n  \"PowerSubType\": 0,\n  \"IgnitionDetect\": 0,\n  \"SleepVoltage\": 11.6,\n  \"PowerOffDelay\": 60,\n  \"SleepMode\": 0,\n  \"GSensorWakeup\": 0,\n  \"WakeUpDuration\": 0,\n  \"WakeUpInterval\": 0,\n  \"VideoRecording\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Device/SetSettings","description":"<p>Queue a SetSettings command to update device config.</p>\n","urlObject":{"path":["Device","SetSettings"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"11edf4a6-a0cf-47b7-ad25-b3831c99641f","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Command queued.\"\n}"},{"id":"6523a84f-2c11-4669-befb-c70d073bf03d","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"No IMEI or ObjectID provided.\"\n}"}],"_postman_id":"af787fb9-4ac3-4871-9bba-0d5774abb325"}],"id":"3b1ef091-a4af-47ad-b688-4c23ba39e5ca","_postman_id":"3b1ef091-a4af-47ad-b688-4c23ba39e5ca","description":""},{"name":"Data","item":[{"name":"Get Events","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Event items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var e = arr[0];\n        pm.expect(e).to.have.property(\"EventID\");\n        pm.expect(e).to.have.property(\"EventType\");\n        pm.expect(e).to.have.property(\"EventTime\");\n        pm.expect(e).to.have.property(\"ObjectID\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"EventID\"]) {\n    pm.collectionVariables.set(\"event_id\", arr[0][\"EventID\"]);\n    console.log(\"Saved event_id: \" + arr[0][\"EventID\"]);\n}"],"id":"daf22466-8f2d-4d05-b6ac-3b10a806de0a"}}],"id":"7b1bb834-e456-4e01-9934-d83aaae47a4b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Data/GetEvents?ObjectID=&CustomerID=&FromDateTime=2024-01-15 00:00:00&ToDateTime=2024-01-15 23:59:59&Events=Accelerate,Brake,Impact","description":"<p>Retrieve events for devices within the time window.</p>\n","urlObject":{"path":["Data","GetEvents"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"CustomerID","value":""},{"key":"FromDateTime","value":"2024-01-15 00:00:00"},{"key":"ToDateTime","value":"2024-01-15 23:59:59"},{"description":{"content":"<p>Comma-separated event types</p>\n","type":"text/plain"},"key":"Events","value":"Accelerate,Brake,Impact"}],"variable":[]}},"response":[{"id":"4a847708-3aa4-4089-996c-ba80821148b7","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"IMEI\": \"123456789012345\",\n    \"ObjectID\": \"\",\n    \"DeviceName\": \"Truck 01\",\n    \"EventID\": \"\",\n    \"EventType\": \"Brake\",\n    \"Heading\": 180,\n    \"Altitude\": 190,\n    \"Speed\": 45.2,\n    \"Latitude\": 41.8781,\n    \"Longitude\": -87.6298,\n    \"EventTime\": \"01/15/2024 02:30:00 PM\",\n    \"Address\": \"123 Main St\",\n    \"ReviewType\": 0,\n    \"EventClass\": 1,\n    \"URLs\": [\n      {\n        \"Channel\": 1,\n        \"MediaType\": \"Video\",\n        \"URL\": \"https://cdn.example.com/media/video.mp4\"\n      }\n    ]\n  }\n]"},{"id":"e4b6c333-d47b-4e8a-b895-7a3075e51e95","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromDateTime is missing or is invalid.\"\n}"}],"_postman_id":"7b1bb834-e456-4e01-9934-d83aaae47a4b"},{"name":"Get Event","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"EventID\");\n    pm.expect(json).to.have.property(\"EventType\");\n    pm.expect(json).to.have.property(\"ObjectID\");\n    pm.expect(json).to.have.property(\"EventTime\");\n    pm.expect(json).to.have.property(\"TripPoints\");\n    pm.expect(json).to.have.property(\"Reviews\");\n});","var json = pm.response.json();\nif (json[\"EventID\"]) {\n    pm.collectionVariables.set(\"event_id\", json[\"EventID\"]);\n    console.log(\"Saved event_id: \" + json[\"EventID\"]);\n}","pm.test(\"TripPoints is an array\", function () {\n    pm.expect(pm.response.json().TripPoints).to.be.an(\"array\");\n});","pm.test(\"EventURL is present and is a string\", function () {\n    pm.expect(pm.response.json().EventURL).to.be.a(\"string\").and.not.empty;\n});"],"id":"56426b26-0ad3-4837-afc2-ceea27a9e927"}}],"id":"6ab30b68-b7d7-4e53-b7b4-b7c9792156a7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Data/GetEvent?EventID=","description":"<p>Get full details for a single event including media and reviews.</p>\n","urlObject":{"path":["Data","GetEvent"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"EventID","value":""}],"variable":[]}},"response":[{"id":"8c8b149b-802a-463f-a11e-8f0267e711f0","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"EventID\": \"\",\n  \"EventType\": \"Brake\",\n  \"ObjectID\": \"\",\n  \"DeviceName\": \"Truck 01\",\n  \"Latitude\": 41.8781,\n  \"Longitude\": -87.6298,\n  \"Speed\": 45.2,\n  \"EventTime\": \"01/15/2024 02:30:00 PM\",\n  \"Reviews\": [],\n  \"TripPoints\": [],\n  \"URLs\": [\n    {\n      \"Channel\": 1,\n      \"MediaType\": \"Video\",\n      \"URL\": \"https://cdn.example.com/media/video.mp4\"\n    }\n  ],\n  \"EventURL\": \"https://platform.example.com/share_event/...\"\n}"},{"id":"a283641c-518e-4746-abfa-3d8cfd03faaa","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Event not found.\"\n}"}],"_postman_id":"6ab30b68-b7d7-4e53-b7b4-b7c9792156a7"},{"name":"Get Trips","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Trip items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        pm.expect(arr[0]).to.have.property(\"tripid\");\n        pm.expect(arr[0]).to.have.property(\"distance\");\n        pm.expect(arr[0]).to.have.property(\"dateStart\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"tripid\"]) {\n    pm.collectionVariables.set(\"trip_id\", arr[0][\"tripid\"]);\n    console.log(\"Saved trip_id: \" + arr[0][\"tripid\"]);\n}"],"id":"f5e446df-c669-48de-94ae-abfc487060cc"}}],"id":"8c6c615d-1b3a-4cf2-b387-cfc605c8c540","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Data/GetTrips?ObjectID=&FromDateTime=2024-01-15 00:00:00&ToDateTime=2024-01-15 23:59:59","description":"<p>List trips for a device in a time range.</p>\n","urlObject":{"path":["Data","GetTrips"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"key":"FromDateTime","value":"2024-01-15 00:00:00"},{"key":"ToDateTime","value":"2024-01-15 23:59:59"}],"variable":[]}},"response":[{"id":"71c04637-36f7-4c15-a10e-8febe4d0d6a4","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"distance\": 125.3,\n    \"duration\": 4500,\n    \"dateStart\": \"01/15/2024 08:00:00 AM\",\n    \"dateEnd\": \"01/15/2024 09:15:00 AM\",\n    \"tripid\": \"\"\n  }\n]"},{"id":"0477e9ca-9772-4489-9759-c4cf66e496dc","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Object not found.\"\n}"}],"_postman_id":"8c6c615d-1b3a-4cf2-b387-cfc605c8c540"},{"name":"Get Trip Details","event":[{"listen":"test","script":{"exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {","    pm.response.to.have.header(\"Content-Type\");","    pm.response.to.be.json;","});","pm.test(\"Response time under 5000ms\", function () {","    pm.expect(pm.response.responseTime).to.be.below(5000);","});","pm.test(\"Response has required fields\", function () {","    var json = pm.response.json();","    pm.expect(json).to.have.property(\"TripPoints\");","    pm.expect(json).to.have.property(\"Events\");","});","pm.test(\"TripPoints and Events are arrays\", function () {","    var r = pm.response.json();","    pm.expect(r.TripPoints).to.be.an(\"array\");","    pm.expect(r.Events).to.be.an(\"array\");","});","pm.test(\"TripPoints have lat and lng\", function () {","    var pts = pm.response.json().TripPoints;","    if (pts.length > 0) {","        pm.expect(pts[0]).to.have.property(\"lat\");","        pm.expect(pts[0]).to.have.property(\"lng\");","    }","});"],"type":"text/javascript","packages":{},"requests":{},"id":"c7574baf-6b4f-4e0e-b5f9-6dbbf8abf700"}}],"id":"8ebe388d-3db8-4a9b-bb74-b0b07880ceb8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Data/GetTripDetails?TripID=","description":"<p>Get GPS points and events for a completed trip by TripID. Points are fetched from S3 storage.</p>\n","urlObject":{"path":["Data","GetTripDetails"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"TripID","value":""}],"variable":[]}},"response":[{"id":"eb0ce0f9-55d0-461a-8338-aca5b387cc03","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"TripPoints\": [\n    {\n      \"dateTS\": 1705315200,\n      \"lat\": 41.8781,\n      \"lng\": -87.6298,\n      \"speed\": 35.5,\n      \"heading\": 90,\n      \"alt\": 190,\n      \"DateTime\": \"01/15/2024 08:00:00 AM\"\n    }\n  ],\n  \"Events\": [\n    {\n      \"EventType\": \"Brake\",\n      \"Latitude\": 41.88,\n      \"Longitude\": -87.63,\n      \"Speed\": 45.2\n    }\n  ]\n}"},{"id":"c2ba9e1b-b2a9-4d52-8c8a-ed937110c17f","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Trip not found.\"\n}"}],"_postman_id":"8ebe388d-3db8-4a9b-bb74-b0b07880ceb8"},{"name":"Get Trip Points","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () { pm.response.to.be.json; });","pm.test(\"Response time under 5000ms\", function () { pm.expect(pm.response.responseTime).to.be.below(5000); });","pm.test(\"Response is an array\", function () { pm.expect(pm.response.json()).to.be.an(\"array\"); });","pm.test(\"Points have Timestamp, lat, lng\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        pm.expect(arr[0]).to.have.property(\"Timestamp\");\n        pm.expect(arr[0]).to.have.property(\"lat\");\n        pm.expect(arr[0]).to.have.property(\"lng\");\n        pm.expect(arr[0]).to.have.property(\"GForce\");\n    }\n});"],"id":"c3cba072-36cb-463f-9afb-8aaa1d11a6f5"}}],"id":"f4386c1c-2195-4181-94ec-f23cb2bf0c46","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Data/GetTripPoints?ObjectID=&FromDateTime=2024-01-15 00:00:00&ToDateTime=2024-01-15 23:59:59","description":"<p>Get raw DRV GPS data points for a device within a time window (max 24h).</p>\n","urlObject":{"path":["Data","GetTripPoints"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required. Use IMEI or ObjectID</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Required. Max 24h range</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-15 00:00:00"},{"description":{"content":"<p>Required. Max 24h range</p>\n","type":"text/plain"},"key":"ToDateTime","value":"2024-01-15 23:59:59"}],"variable":[]}},"response":[{"id":"96c41a3d-2fa3-40cf-ab91-b13ef2817240","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"Timestamp\": 1705315200,\n    \"lat\": 41.8781,\n    \"lng\": -87.6298,\n    \"speed\": 35.5,\n    \"heading\": 90,\n    \"alt\": 190,\n    \"GSensorX\": 0.1,\n    \"GSensorY\": 0.2,\n    \"GSensorZ\": 9.8,\n    \"GForce\": 9.82,\n    \"DateTime\": \"01/15/2024 08:00:00 AM\"\n  }\n]"},{"id":"746e5dba-0b29-46f1-ab5a-c74148bd0544","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromDateTime is missing or is invalid.\"\n}"}],"_postman_id":"f4386c1c-2195-4181-94ec-f23cb2bf0c46"},{"name":"Get Current Trip Points","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"TripPoints\");\n    pm.expect(json).to.have.property(\"Events\");\n});","pm.test(\"TripPoints is an array\", function () {\n    pm.expect(pm.response.json().TripPoints).to.be.an(\"array\");\n});"],"id":"94ebe8c3-6ee6-4969-aeb7-907845287465"}}],"id":"dc898b1f-c523-471f-8052-e6bad3c2c510","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Data/GetCurrentTripPoints?ObjectID=","description":"<p>Get live GPS points for the ongoing trip.</p>\n","urlObject":{"path":["Data","GetCurrentTripPoints"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ObjectID","value":""}],"variable":[]}},"response":[{"id":"3babc33a-ec07-40cc-864e-c560f9b87c34","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"TripPoints\": [\n    {\n      \"dateTS\": 1705315200,\n      \"lat\": 41.8781,\n      \"lng\": -87.6298,\n      \"speed\": 35.5\n    }\n  ],\n  \"Events\": []\n}"},{"id":"2ed55376-776a-41e4-9058-92d424994fad","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Object not found.\"\n}"}],"_postman_id":"dc898b1f-c523-471f-8052-e6bad3c2c510"},{"name":"Get Media","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Media items have URLs array\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        pm.expect(arr[0]).to.have.property(\"URLs\");\n        pm.expect(arr[0].URLs).to.be.an(\"array\");\n    }\n});"],"id":"e5b34082-4fc9-4d88-a255-4d4fc23de0db"}}],"id":"7267e430-cb94-4c47-a84e-d4a669b37d3a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Data/GetMedia?ObjectID=&CustomerID=&FromDateTime=2024-01-15 00:00:00&ToDateTime=2024-01-15 23:59:59&SortBy=EventTime&OrderBy=DESC","description":"<p>List media (video/images) with associated event info.</p>\n","urlObject":{"path":["Data","GetMedia"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"CustomerID","value":""},{"key":"FromDateTime","value":"2024-01-15 00:00:00"},{"key":"ToDateTime","value":"2024-01-15 23:59:59"},{"description":{"content":"<p>EventTime | Created</p>\n","type":"text/plain"},"key":"SortBy","value":"EventTime"},{"description":{"content":"<p>ASC | DESC</p>\n","type":"text/plain"},"key":"OrderBy","value":"DESC"}],"variable":[]}},"response":[{"id":"dd13887f-f352-45ae-9490-847768df13e8","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"EventID\": \"\",\n    \"EventType\": \"VideoUpload\",\n    \"DeviceName\": \"Truck 01\",\n    \"ObjectID\": \"\",\n    \"EventTime\": \"01/15/2024 02:30:00 PM\",\n    \"URLs\": [\n      {\n        \"URL\": \"https://cdn.example.com/media/video.mp4\",\n        \"channel\": 1,\n        \"MediaType\": \"Video\"\n      }\n    ]\n  }\n]"},{"id":"ec9d82fb-1835-40f9-9873-e9c1ec22823b","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"7267e430-cb94-4c47-a84e-d4a669b37d3a"}],"id":"4097d840-6c3e-4018-9c35-032a6c6e0016","_postman_id":"4097d840-6c3e-4018-9c35-032a6c6e0016","description":""},{"name":"Event","item":[{"name":"Get Event Types","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"EventTypeID\");\n    pm.expect(item).to.have.property(\"EventType\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"EventTypeID\"]) {\n    pm.collectionVariables.set(\"event_type_id\", arr[0][\"EventTypeID\"]);\n    console.log(\"Saved event_type_id: \" + arr[0][\"EventTypeID\"]);\n}"],"id":"f37b4290-88be-40f3-a2e0-88410a9c9e97"}}],"id":"dba7292d-0703-4fc5-ae19-94b38b1d60b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Event/GetEventTypes?Category=safety","description":"<p>List subscribable event types.</p>\n","urlObject":{"path":["Event","GetEventTypes"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Optional category filter</p>\n","type":"text/plain"},"key":"Category","value":"safety"}],"variable":[]}},"response":[{"id":"92d7058a-2b54-4664-b2ad-e72a5bc6617f","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"EventTypeID\": \"\",\n    \"EventType\": \"Brake\",\n    \"EventClass\": 1\n  }\n]"},{"id":"49ac1e9c-e2cf-40f4-a02e-b9e850d566be","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"dba7292d-0703-4fc5-ae19-94b38b1d60b7"},{"name":"Get Resolve Types","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"ResolveTypeID\");\n    pm.expect(item).to.have.property(\"ReviewType\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"ResolveTypeID\"]) {\n    pm.collectionVariables.set(\"resolve_type_id\", arr[0][\"ResolveTypeID\"]);\n    console.log(\"Saved resolve_type_id: \" + arr[0][\"ResolveTypeID\"]);\n}"],"id":"3fe83e72-ce0e-479d-b8f0-bb175f1fec4d"}}],"id":"df850d33-d1b6-43d7-bc52-42938cffc224","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Event/GetResolveTypes","description":"<p>List available event resolve/review types.</p>\n","urlObject":{"path":["Event","GetResolveTypes"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"dc95c2ee-4659-442f-bf22-c1af6e7b8f5c","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"ResolveTypeID\": \"\",\n    \"ReviewType\": \"False Alarm\",\n    \"Required\": 0\n  }\n]"},{"id":"c6e103b5-b720-44c1-89ae-4def956e7091","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"df850d33-d1b6-43d7-bc52-42938cffc224"},{"name":"Resolve Event","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"280fee5f-9040-4157-9ad4-e7283e381862"}}],"id":"d1d06dfa-7af6-40a0-9eb7-e8ccc32fb0f3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"EventID\": \"\",\n  \"ResolveTypeID\": \"\",\n  \"ReviewType\": 2,\n  \"Message\": \"Confirmed false alarm.\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Event/Resolve","description":"<p>Resolve or archive an event with a review type.</p>\n","urlObject":{"path":["Event","Resolve"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"42480209-bd2e-4195-839f-18ef2ec08e19","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"ca4ae2d9-e62d-45b9-98d4-363fd763ad01","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide EventID.\"\n}"}],"_postman_id":"d1d06dfa-7af6-40a0-9eb7-e8ccc32fb0f3"},{"name":"Get Event Notifications","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Notification items have EventType and EventID\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        pm.expect(arr[0]).to.have.property(\"EventType\");\n        pm.expect(arr[0]).to.have.property(\"EventID\");\n    }\n});"],"id":"7052670f-e6dd-466d-bbb7-a0447d8bdc0c"}}],"id":"fcca0530-fa5b-4d11-9278-e681789c65c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Event/GetEventNotifications?FromDateTime=2024-01-15 00:00:00","description":"<p>Get recent event notifications since a given timestamp.</p>\n","urlObject":{"path":["Event","GetEventNotifications"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-15 00:00:00"}],"variable":[]}},"response":[{"id":"107ce356-cc93-4e0f-b85a-39c489550c2a","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"EventType\": \"Brake\",\n    \"EventID\": \"\",\n    \"EventTime\": \"01/15/2024 02:30:00 PM\"\n  }\n]"},{"id":"972ce90c-079b-44c8-883f-c07efefac7ef","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromDateTime is missing or invalid.\"\n}"}],"_postman_id":"fcca0530-fa5b-4d11-9278-e681789c65c4"}],"id":"f6739629-3dd0-4132-835c-8043e94b1275","_postman_id":"f6739629-3dd0-4132-835c-8043e94b1275","description":""},{"name":"Media","item":[{"name":"Request Video","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"6931ff07-c3db-4261-a9f0-841ff4715347"}}],"id":"ba6fd756-dbac-4f14-aa49-8b452e725cf8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Media/RequestVideo?ObjectID=&FromDateTime=2024-01-15 14:00:00&ToDateTime=2024-01-15 14:05:00&Channels=1,2","description":"<p>Queue a video retrieval request for a past time window.</p>\n","urlObject":{"path":["Media","RequestVideo"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-15 14:00:00"},{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ToDateTime","value":"2024-01-15 14:05:00"},{"description":{"content":"<p>Optional comma-separated channels</p>\n","type":"text/plain"},"key":"Channels","value":"1,2"}],"variable":[]}},"response":[{"id":"c92f60e1-3b19-40f7-b488-4b5f38e2f9fa","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"082fbf15-cb4f-4d22-a3fc-e02cd73d5b71","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromDateTime is missing or is invalid.\"\n}"}],"_postman_id":"ba6fd756-dbac-4f14-aa49-8b452e725cf8"},{"name":"Request Image (Snapshot)","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"705b1a97-c341-464e-855e-6229c56653fa"}}],"id":"d8fdf7ec-61e3-4dd9-9d22-9df8689bae2b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Media/RequestImage?ObjectID=&FromDateTime=2024-01-15 14:00:00&Channels=1","description":"<p>Queue a snapshot capture request.</p>\n","urlObject":{"path":["Media","RequestImage"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-15 14:00:00"},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"Channels","value":"1"}],"variable":[]}},"response":[{"id":"4afb40f9-9be5-4275-ad0e-867cc81f2442","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"16be09c6-b713-457b-b5f3-972767cf1ddc","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"IMEI or ObjectID not provided.\"\n}"}],"_postman_id":"d8fdf7ec-61e3-4dd9-9d22-9df8689bae2b"},{"name":"Live Video","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});","pm.test(\"URL is returned on success\", function () {\n    if (pm.response.json().Code === 200) {\n        pm.expect(pm.response.json()).to.have.property(\"URL\");\n    }\n});"],"id":"21d4ae08-68a6-4127-b824-5535c06808c6"}}],"id":"5f03de9c-c2ba-45a5-8ab0-3636067a99db","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Media/LiveVideo?ObjectID=&Duration=30&Channels=1,2","description":"<p>Start a live video stream for a device.</p>\n","urlObject":{"path":["Media","LiveVideo"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Seconds, 10–60</p>\n","type":"text/plain"},"key":"Duration","value":"30"},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"Channels","value":"1,2"}],"variable":[]}},"response":[{"id":"8134df4c-7f43-4227-9fa4-a6c5cbc8bea3","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\",\n  \"URL\": \"https://stream.example.com/receiver/abc123?channels=1,2\"\n}"},{"id":"f5564438-b1b4-4c80-af31-c9815516905c","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"IMEI not provided.\"\n}"}],"_postman_id":"5f03de9c-c2ba-45a5-8ab0-3636067a99db"},{"name":"Stop Live Video","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"407c4c08-34b2-47a1-8340-3b7dabd94956"}}],"id":"9351cc95-73b6-4ea5-a672-61000935c7b6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"ObjectID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Media/StopLiveVideo","description":"<p>Stop an active live video stream. ObjectID is passed in the request body.</p>\n","urlObject":{"path":["Media","StopLiveVideo"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"531a4b83-e75c-4ec5-8bc9-e1ab52f86a06","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"af6dc24e-2800-4f47-bd4e-6fba7674a86e","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide ObjectID\"\n}"}],"_postman_id":"9351cc95-73b6-4ea5-a672-61000935c7b6"},{"name":"Get Pending Media","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Pending items have RequestType\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        pm.expect(arr[0]).to.have.property(\"RequestType\");\n        pm.expect(arr[0]).to.have.property(\"RequestID\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"RequestID\"]) {\n    pm.collectionVariables.set(\"request_id\", arr[0][\"RequestID\"]);\n    console.log(\"Saved request_id: \" + arr[0][\"RequestID\"]);\n}"],"id":"a58658fa-6962-4860-ad70-b15d6f1e896c"}}],"id":"433839da-f43e-4c03-82fb-8552acc8760c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Media/GetPendingMedia?ObjectID=&CustomerID=&FromDateTime=2024-01-15 12:00:00&ToDateTime=2024-01-15 15:00:00","description":"<p>List pending or recent media requests.</p>\n","urlObject":{"path":["Media","GetPendingMedia"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"CustomerID","value":""},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-15 12:00:00"},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"ToDateTime","value":"2024-01-15 15:00:00"}],"variable":[]}},"response":[{"id":"e5b24c65-e979-4ebd-8ad8-451006248c63","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"DeviceName\": \"Truck 01\",\n    \"IMEI\": \"123456789012345\",\n    \"RequestedBy\": \"John Doe\",\n    \"RequestType\": \"VideoRequest\",\n    \"RequestTime\": \"01/15/2024 02:00:00 PM\",\n    \"FromDateTime\": \"01/15/2024 02:00:00 PM\",\n    \"ToDateTime\": \"01/15/2024 02:05:00 PM\",\n    \"TimeAgo\": \"00:30:00\",\n    \"RequestID\": \"\"\n  }\n]"},{"id":"25e3fb6b-6265-498a-a237-b65b97b84cce","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"433839da-f43e-4c03-82fb-8552acc8760c"}],"id":"12010e99-80df-4aa1-9c79-7506873b73f4","_postman_id":"12010e99-80df-4aa1-9c79-7506873b73f4","description":""},{"name":"Geofence","item":[{"name":"Get Geofences","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"GeofenceID\");\n    pm.expect(item).to.have.property(\"Name\");\n    pm.expect(item).to.have.property(\"CustomerID\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"GeofenceID\"]) {\n    pm.collectionVariables.set(\"geofence_id\", arr[0][\"GeofenceID\"]);\n    console.log(\"Saved geofence_id: \" + arr[0][\"GeofenceID\"]);\n}"],"id":"bb577a52-7b38-429e-9427-672c6819c712"}}],"id":"65191cc2-8c5c-41fa-b872-d8eb0a051866","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Geofence/GetGeofences?CustomerID=","description":"<p>List all geofences for a customer.</p>\n","urlObject":{"path":["Geofence","GetGeofences"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"CustomerID","value":""}],"variable":[]}},"response":[{"id":"f3c63b27-cb99-4d77-b764-a714f39870b1","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"GeofenceID\": \"\",\n    \"CustomerID\": \"\",\n    \"Name\": \"Warehouse Zone\",\n    \"Circle\": 0,\n    \"AllDevices\": 1,\n    \"RequestMedia\": 3,\n    \"Color\": \"#0692ea\",\n    \"DeviceCount\": 5\n  }\n]"},{"id":"e0924cf1-6e40-4b5e-9460-a2c82876e7f6","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide CustomerID.\"\n}"}],"_postman_id":"65191cc2-8c5c-41fa-b872-d8eb0a051866"},{"name":"Get Geofence","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"GeofenceID\");\n    pm.expect(json).to.have.property(\"Name\");\n    pm.expect(json).to.have.property(\"Points\");\n    pm.expect(json).to.have.property(\"Devices\");\n});","pm.test(\"Points is an array\", function () {\n    pm.expect(pm.response.json().Points).to.be.an(\"array\");\n});","pm.test(\"Devices is an array\", function () {\n    pm.expect(pm.response.json().Devices).to.be.an(\"array\");\n});"],"id":"fccad08b-7190-4b18-a4b6-25c28c2148f9"}}],"id":"9b39cc5d-2478-4a86-8bea-1a2ce5456c13","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Geofence/GetGeofence?GeofenceID=","description":"<p>Get detailed info and assigned devices for a geofence.</p>\n","urlObject":{"path":["Geofence","GetGeofence"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"GeofenceID","value":""}],"variable":[]}},"response":[{"id":"88e2fc64-2399-4f45-8213-670adddb4c08","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"GeofenceID\": \"\",\n  \"CustomerID\": \"\",\n  \"Name\": \"Warehouse Zone\",\n  \"Circle\": 0,\n  \"AllDevices\": 0,\n  \"RequestMedia\": 1,\n  \"Color\": \"#0692ea\",\n  \"Weekdays\": 1234567,\n  \"TimeFrom\": \"08:00\",\n  \"TimeTo\": \"18:00\",\n  \"TZInfo\": \"America/Chicago\",\n  \"Points\": [\n    [\n      41.87,\n      -87.63\n    ],\n    [\n      41.88,\n      -87.63\n    ],\n    [\n      41.88,\n      -87.62\n    ],\n    [\n      41.87,\n      -87.62\n    ]\n  ],\n  \"Devices\": [\n    {\n      \"DeviceName\": \"Truck 01\",\n      \"IMEI\": \"123456789012345\",\n      \"ObjectID\": \"\"\n    }\n  ]\n}"},{"id":"c94d41e2-8b9d-417c-9f5e-8fe1ca788ad1","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"GeoFence not found.\"\n}"}],"_postman_id":"9b39cc5d-2478-4a86-8bea-1a2ce5456c13"},{"name":"New Geofence","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"28ce6e0d-de3e-43eb-b1eb-eae2b5df213f"}}],"id":"d32e2b9a-2b47-4655-bb1d-8d8a75e2c65c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"CustomerID\": \"\",\n  \"Name\": \"Warehouse Zone\",\n  \"Points\": [\n    [\n      41.87,\n      -87.63\n    ],\n    [\n      41.88,\n      -87.63\n    ],\n    [\n      41.88,\n      -87.62\n    ],\n    [\n      41.87,\n      -87.62\n    ]\n  ],\n  \"Objects\": [\n    \"\"\n  ],\n  \"AllDevices\": 0,\n  \"RequestMedia\": 1,\n  \"Weekdays\": 1234567,\n  \"TimeFrom\": \"08:00\",\n  \"TimeTo\": \"18:00\",\n  \"TZInfo\": \"America/Chicago\",\n  \"Color\": \"#0692ea\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Geofence/NewGeofence","description":"<p>Create a polygon or circle geofence.</p>\n","urlObject":{"path":["Geofence","NewGeofence"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"5ef81888-837b-448d-9b60-e6eff2dc661f","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"33e4e19f-7620-482b-9352-5d49f25771d1","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide CustomerID.\"\n}"}],"_postman_id":"d32e2b9a-2b47-4655-bb1d-8d8a75e2c65c"},{"name":"Edit Geofence","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"02bfea7b-e42c-418f-b692-5ae94c9a923a"}}],"id":"f9b3d583-4ffd-4885-b99d-89a44a2658e0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"GeofenceID\": \"\",\n  \"Name\": \"Warehouse Zone Updated\",\n  \"Points\": [\n    [\n      41.87,\n      -87.63\n    ],\n    [\n      41.88,\n      -87.63\n    ],\n    [\n      41.88,\n      -87.62\n    ],\n    [\n      41.87,\n      -87.62\n    ]\n  ],\n  \"Objects\": [\n    \"\"\n  ],\n  \"AllDevices\": 0,\n  \"RequestMedia\": 3,\n  \"Weekdays\": 12345,\n  \"TimeFrom\": \"07:00\",\n  \"TimeTo\": \"19:00\",\n  \"TZInfo\": \"America/Chicago\",\n  \"Color\": \"#ff5500\",\n  \"Active\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Geofence/EditGeofence","description":"<p>Update an existing geofence.</p>\n","urlObject":{"path":["Geofence","EditGeofence"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"482a0c11-2505-44e9-b8df-a4344bf8f3b3","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"2f341ab1-9e80-43bb-9e33-a9fb29063c36","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide GeofenceID.\"\n}"}],"_postman_id":"f9b3d583-4ffd-4885-b99d-89a44a2658e0"},{"name":"Delete Geofence","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"65e04765-7f90-4ebd-ae4d-23676c23a02e"}}],"id":"d3a2748b-a73b-44ce-b093-8096680c71c6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"GeofenceID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Geofence/DeleteGeofence","description":"<p>Delete a geofence and all its device assignments.</p>\n","urlObject":{"path":["Geofence","DeleteGeofence"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"82ce88f1-bdbf-488d-b930-bb622d1b5b79","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"d55f919f-554c-4142-9067-c1b70fba87d9","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Geofence not found.\"\n}"}],"_postman_id":"d3a2748b-a73b-44ce-b093-8096680c71c6"}],"id":"39493bfb-724b-4a7e-af84-c1f416835eb5","_postman_id":"39493bfb-724b-4a7e-af84-c1f416835eb5","description":""},{"name":"Notifications","item":[{"name":"Get Notifications","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Notification items have Events and Emails arrays\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        pm.expect(arr[0].Events).to.be.an(\"array\");\n        pm.expect(arr[0].Emails).to.be.an(\"array\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"NotificationID\"]) {\n    pm.collectionVariables.set(\"notification_id\", arr[0][\"NotificationID\"]);\n    console.log(\"Saved notification_id: \" + arr[0][\"NotificationID\"]);\n}"],"id":"b96fba01-bb17-46c7-a3af-a3ab67a3e798"}}],"id":"05072d1b-0904-4d68-ae08-091c72a503e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Notifications/GetNotifications?CustomerID=","description":"<p>List email notification profiles for a customer.</p>\n","urlObject":{"path":["Notifications","GetNotifications"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"CustomerID","value":""}],"variable":[]}},"response":[{"id":"15ec0175-7d23-4375-9279-d5e720255ef0","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"NotificationID\": \"\",\n    \"Name\": \"Safety Alerts\",\n    \"Custom\": 0,\n    \"Active\": 1,\n    \"Weekdays\": \"1234567\",\n    \"TimeFrom\": null,\n    \"TimeTo\": null,\n    \"Timezone\": \"America/Chicago\",\n    \"Emails\": [\n      \"alerts@example.com\"\n    ],\n    \"Events\": [\n      \"Brake\",\n      \"Impact\",\n      \"SOS\"\n    ]\n  }\n]"},{"id":"2fee8bb7-a404-436a-901b-59828bc87d5e","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Customer not found.\"\n}"}],"_postman_id":"05072d1b-0904-4d68-ae08-091c72a503e4"},{"name":"New Notification","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"57e7230f-f28f-449c-a839-698380fe0245"}}],"id":"1fc2a591-ca20-4815-9983-58aa0f19d518","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"CustomerID\": \"\",\n  \"Name\": \"Safety Alerts\",\n  \"Custom\": 1,\n  \"Emails\": [\n    \"alerts@example.com\"\n  ],\n  \"Events\": [\n    \"Brake\",\n    \"Impact\",\n    \"SOS\"\n  ],\n  \"Weekdays\": \"1234567\",\n  \"TimeFrom\": \"08:00\",\n  \"TimeTo\": \"18:00\",\n  \"Timezone\": \"America/Chicago\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Notifications/NewNotification","description":"<p>Create an email notification profile.</p>\n","urlObject":{"path":["Notifications","NewNotification"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"52c208ca-e3f1-4407-9c54-afa21ad7dae1","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"84adb068-a90f-489e-bebf-8d3edcc73950","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Missing Events.\"\n}"}],"_postman_id":"1fc2a591-ca20-4815-9983-58aa0f19d518"},{"name":"Edit Notification","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"88a46fed-2cc2-4e06-90fe-8bb43a9af3cf"}}],"id":"926a7c22-cfd5-4015-9bca-658919c1fa1a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"NotificationID\": \"\",\n  \"Name\": \"Safety Alerts Updated\",\n  \"Emails\": [\n    \"newalerts@example.com\"\n  ],\n  \"Events\": [\n    \"Brake\",\n    \"Impact\"\n  ],\n  \"Active\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Notifications/EditNotification","description":"<p>Update an existing notification profile.</p>\n","urlObject":{"path":["Notifications","EditNotification"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"c9685784-600e-4ae9-8124-e4e30d3af712","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"0af79c36-9d2b-423f-ac4f-a219a1de7eef","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Missing NotificationID.\"\n}"}],"_postman_id":"926a7c22-cfd5-4015-9bca-658919c1fa1a"},{"name":"Delete Notification","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"926e9cba-86a3-4dfc-ba27-3bbbc4f6dbdd"}}],"id":"43f07fec-842d-4a3d-aacb-997219ba0dc1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"NotificationID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Notifications/DelNotification","description":"<p>Delete a notification profile.</p>\n","urlObject":{"path":["Notifications","DelNotification"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"ca16b8e9-60df-4a50-bbcd-47d665c72e55","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success.\"\n}"},{"id":"33d62830-1191-4c4e-98d0-aaac91c6083c","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Missing NotificationID.\"\n}"}],"_postman_id":"43f07fec-842d-4a3d-aacb-997219ba0dc1"}],"id":"ddd7457b-f8e2-4b81-8ccf-e0e48b7f8f11","_postman_id":"ddd7457b-f8e2-4b81-8ccf-e0e48b7f8f11","description":""},{"name":"Callbacks","item":[{"name":"Get Endpoints","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"EndpointID\");\n    pm.expect(item).to.have.property(\"EndpointName\");\n    pm.expect(item).to.have.property(\"URL\");\n    pm.expect(item).to.have.property(\"Active\");\n    }\n});","var arr = pm.response.json();\nif (arr && arr.length > 0 && arr[0][\"EndpointID\"]) {\n    pm.collectionVariables.set(\"endpoint_id\", arr[0][\"EndpointID\"]);\n    console.log(\"Saved endpoint_id: \" + arr[0][\"EndpointID\"]);\n}"],"id":"4c3d164e-feaf-4b89-9710-c682c81cfa15"}}],"id":"d3a34ba5-ae52-492c-a790-cb8bdac5fc8d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Callbacks/GetEndpoints?CustomerID=&EndpointID=","description":"<p>List webhook endpoints.</p>\n","urlObject":{"path":["Callbacks","GetEndpoints"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"CustomerID","value":""},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"EndpointID","value":""}],"variable":[]}},"response":[{"id":"1c54d5e4-6855-4d9f-893d-629616e9cd04","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"EndpointName\": \"My Webhook\",\n    \"EndpointID\": \"\",\n    \"Active\": 1,\n    \"Headers\": {\n      \"Authorization\": \"Bearer token\"\n    },\n    \"CreatedOn\": \"2024-01-01 00:00:00\",\n    \"URL\": \"https://webhook.example.com/events\",\n    \"CustomerName\": \"Acme Corp\"\n  }\n]"},{"id":"ba5065bb-664d-48f5-9015-3f8a6e6d5172","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"d3a34ba5-ae52-492c-a790-cb8bdac5fc8d"},{"name":"Get All Events","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"EventTypeID\");\n    pm.expect(item).to.have.property(\"EventName\");\n    }\n});"],"id":"f919c68c-8560-467f-8fe6-42f3f56655c2"}}],"id":"9b5a53f4-f357-4b50-ab9a-36689faefeba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Callbacks/GetAllEvents","description":"<p>List all subscribable event types for callbacks.</p>\n","urlObject":{"path":["Callbacks","GetAllEvents"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"b47433c5-9109-4f5f-884f-e8cdeef1b4b1","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"EventTypeID\": \"\",\n    \"EventName\": \"Brake\"\n  }\n]"},{"id":"ce69a130-0814-4db0-9b18-1ad92f501eae","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Unauthorized.\"\n}"}],"_postman_id":"9b5a53f4-f357-4b50-ab9a-36689faefeba"},{"name":"Get Subscriptions","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response is an array\", function () {\n    pm.expect(pm.response.json()).to.be.an(\"array\");\n});","pm.test(\"Array items have required fields\", function () {\n    var arr = pm.response.json();\n    if (arr.length > 0) {\n        var item = arr[0];\n        pm.expect(item).to.have.property(\"EventTypeID\");\n    pm.expect(item).to.have.property(\"EventName\");\n    pm.expect(item).to.have.property(\"Subscribed\");\n    }\n});"],"id":"e7dbe774-933c-45ea-a66e-898028700727"}}],"id":"8f606e7b-d07d-41c9-b836-f5e3e6d27f7d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Callbacks/GetSubscriptions?EndpointID=","description":"<p>List event subscriptions for a webhook endpoint.</p>\n","urlObject":{"path":["Callbacks","GetSubscriptions"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"EndpointID","value":""}],"variable":[]}},"response":[{"id":"8f344a0d-3aad-4d5d-baa0-eb98a0e5b84e","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"EventTypeID\": \"\",\n    \"EventName\": \"Brake\",\n    \"CreatedOn\": \"2024-01-01 00:00:00\",\n    \"Media\": 1,\n    \"Subscribed\": 1\n  }\n]"},{"id":"1981e260-ea7d-42ee-841d-7ab8a3e17b6d","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"No EndpointID provided.\"\n}"}],"_postman_id":"8f606e7b-d07d-41c9-b836-f5e3e6d27f7d"},{"name":"New Subscription","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"44cf098d-a221-4203-a3bc-765320b4b075"}}],"id":"0f9c0ac3-3f65-4fc6-a3d8-304599f661e2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"CustomerID\": \"\",\n  \"EndpointName\": \"My Webhook\",\n  \"URL\": \"https://webhook.example.com/events\",\n  \"Headers\": {\n    \"Authorization\": \"{{bearer_token}}\"\n  },\n  \"Events\": {\n    \"Brake\": 1,\n    \"Impact\": 2,\n    \"SOS\": 1\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Callbacks/NewSubscription","description":"<p>Create a new webhook endpoint with event subscriptions.</p>\n","urlObject":{"path":["Callbacks","NewSubscription"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"da367518-fe83-415d-85ae-0ddaee97e0c0","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"d55c088e-6774-4c55-8c5d-58d688812759","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide EndpointName.\"\n}"}],"_postman_id":"0f9c0ac3-3f65-4fc6-a3d8-304599f661e2"},{"name":"Edit Subscription","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"c8d7439e-a562-49b7-885f-c021026a284c"}}],"id":"2db845fb-cb26-4eec-ac2f-f45e98866c49","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"EndpointID\": \"\",\n  \"EndpointName\": \"My Webhook Updated\",\n  \"URL\": \"https://webhook.example.com/events-v2\",\n  \"Headers\": {\n    \"Authorization\": \"{{bearer_token}}\"\n  },\n  \"Events\": {\n    \"Brake\": 1,\n    \"SOS\": 3\n  },\n  \"Active\": 1\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Callbacks/EditSubscription","description":"<p>Update a webhook endpoint and its subscriptions.</p>\n","urlObject":{"path":["Callbacks","EditSubscription"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"4c033872-06cf-494b-b090-1ed79ee25d7b","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"ed20e3da-508e-4f68-bd8a-aaefee2165e1","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide EndpointID.\"\n}"}],"_postman_id":"2db845fb-cb26-4eec-ac2f-f45e98866c49"},{"name":"Delete Subscription","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has Code field\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Code\");\n});",""],"id":"0eec4691-5096-4d63-9f94-aa9c2813fa6f"}}],"id":"49f61c8f-31c4-40e8-84c3-8d34e9552243","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"EndpointID\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.example.com/Callbacks/DeleteSubscription","description":"<p>Remove a webhook endpoint and all its subscriptions.</p>\n","urlObject":{"path":["Callbacks","DeleteSubscription"],"host":["https://api.example.com"],"query":[],"variable":[]}},"response":[{"id":"98926b13-9bd8-4c33-b594-ddd5bd9904f9","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 200,\n  \"Message\": \"Success\"\n}"},{"id":"7dbf3876-20ac-4714-b0b0-ea49c09c0221","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"Please, provide EndpointID.\"\n}"}],"_postman_id":"49f61c8f-31c4-40e8-84c3-8d34e9552243"}],"id":"235d9510-7cc9-4071-a34e-b8d9bca155a1","_postman_id":"235d9510-7cc9-4071-a34e-b8d9bca155a1","description":""},{"name":"Report","item":[{"name":"Event History","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Events\");\n    pm.expect(json).to.have.property(\"Status\");\n    pm.expect(json).to.have.property(\"Types\");\n    pm.expect(json).to.have.property(\"Reasons\");\n});","pm.test(\"Status has Active, Archived and Dismissed keys\", function () {\n    var s = pm.response.json().Status;\n    pm.expect(s).to.have.property(\"Active\");\n    pm.expect(s).to.have.property(\"Archived\");\n    pm.expect(s).to.have.property(\"Dismissed\");\n});","pm.test(\"Events is an array\", function () {\n    pm.expect(pm.response.json().Events).to.be.an(\"array\");\n});"],"id":"03fb1c68-a6f9-4f53-b16f-08f59dbca4f1"}}],"id":"1a4014ba-1224-4e15-bbcd-dd1ac5354525","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Report/EventHistory?FromDateTime=2024-01-01 00:00:00&ToDateTime=2024-01-31 23:59:59&Events=Brake,Impact&Category=1&Status=&Objects=","description":"<p>Aggregated event history report with status breakdown. Category is numeric (1=Safety). Objects is optional comma-separated ObjectIDs filter.</p>\n","urlObject":{"path":["Report","EventHistory"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-01 00:00:00"},{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ToDateTime","value":"2024-01-31 23:59:59"},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"Events","value":"Brake,Impact"},{"description":{"content":"<p>Numeric category: 1=Safety, etc.</p>\n","type":"text/plain"},"key":"Category","value":"1"},{"description":{"content":"<p>0=Active 1=Archived 2=Dismissed</p>\n","type":"text/plain"},"key":"Status","value":""},{"description":{"content":"<p>Optional comma-separated ObjectIDs to filter</p>\n","type":"text/plain"},"key":"Objects","value":""}],"variable":[]}},"response":[{"id":"57d10b35-3e16-4a49-921d-396396c4ae5d","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Events\": [\n    {\n      \"DeviceName\": \"Truck 01\",\n      \"IMEI\": \"123456789012345\",\n      \"EventType\": \"Brake\",\n      \"Address\": \"123 Main St\",\n      \"Speed\": 45.2,\n      \"EventTime\": \"01/15/2024 02:30:00 PM\",\n      \"ReviewType\": \"Active\",\n      \"EventClass\": 1,\n      \"Reviews\": \"\"\n    }\n  ],\n  \"Status\": {\n    \"Active\": 10,\n    \"Archived\": 3,\n    \"Dismissed\": 2\n  },\n  \"Types\": {\n    \"Brake\": 8,\n    \"Impact\": 5\n  },\n  \"Reasons\": {\n    \"False Alarm\": 2\n  }\n}"},{"id":"59a1de37-44bf-4f40-8280-3b59fd498aef","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromDateTime is missing or is invalid.\"\n}"}],"_postman_id":"1a4014ba-1224-4e15-bbcd-dd1ac5354525"},{"name":"Trip History","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Trips\");\n    pm.expect(json).to.have.property(\"Summary\");\n});","pm.test(\"Summary has TripCount and TotalDistance\", function () {\n    var s = pm.response.json().Summary;\n    pm.expect(s).to.have.property(\"TripCount\");\n    pm.expect(s).to.have.property(\"TotalDistance\");\n});"],"id":"0825072f-d274-49d2-97e7-7cf0ea6284a3"}}],"id":"800f3ebd-384c-462f-8a71-ca740f6076af","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Report/TripHistory?FromDateTime=2024-01-01 00:00:00&ToDateTime=2024-01-31 23:59:59&CustomerID=&Objects=","description":"<p>Aggregated trip history report with totals.</p>\n","urlObject":{"path":["Report","TripHistory"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-01 00:00:00"},{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ToDateTime","value":"2024-01-31 23:59:59"},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"CustomerID","value":""},{"description":{"content":"<p>Optional comma-separated</p>\n","type":"text/plain"},"key":"Objects","value":""}],"variable":[]}},"response":[{"id":"0f13f66d-0690-43d7-945b-b174bd8c71b4","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Trips\": [\n    {\n      \"DeviceName\": \"Truck 01\",\n      \"ObjectID\": \"\",\n      \"TripID\": \"\",\n      \"FromDateTime\": \"01/15/2024 08:00:00 AM\",\n      \"ToDateTime\": \"01/15/2024 09:15:00 AM\",\n      \"Distance\": 125.3,\n      \"Duration\": 4500,\n      \"FromAddress\": \"123 Main St\",\n      \"ToAddress\": \"456 Oak Ave\"\n    }\n  ],\n  \"Summary\": {\n    \"TripCount\": 1,\n    \"TotalDistance\": 125.3,\n    \"TotalDrivingTime\": 4500,\n    \"AverageDistance\": 125.3,\n    \"AverageTripDuration\": 4500\n  }\n}"},{"id":"030d81da-69f5-482b-b111-dc0d9981cc00","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromDateTime is missing or invalid.\"\n}"}],"_postman_id":"800f3ebd-384c-462f-8a71-ca740f6076af"},{"name":"Zone History","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Records\");\n    pm.expect(json).to.have.property(\"Summary\");\n});","pm.test(\"Summary has TotalEntries and TotalExists\", function () {\n    var s = pm.response.json().Summary;\n    pm.expect(s).to.have.property(\"TotalEntries\");\n    pm.expect(s).to.have.property(\"TotalExists\");\n});"],"id":"c6df0cfd-be2c-41e4-9912-f961fe883e43"}}],"id":"4fc1faa4-bd08-4ddf-9f92-9a0a1003c7f6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Report/ZoneHistory?FromDateTime=2024-01-01 00:00:00&ToDateTime=2024-01-31 23:59:59&CustomerID=&ObjectID=&GeofenceID=","description":"<p>Geofence crossing history and summary.</p>\n","urlObject":{"path":["Report","ZoneHistory"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-01 00:00:00"},{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ToDateTime","value":"2024-01-31 23:59:59"},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"CustomerID","value":""},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"ObjectID","value":""},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"GeofenceID","value":""}],"variable":[]}},"response":[{"id":"9cffaec4-b5c4-46e0-84c9-5d8b76422eb0","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Records\": [\n    {\n      \"GeofenceID\": \"\",\n      \"ZoneName\": \"Warehouse\",\n      \"DeviceName\": \"Truck 01\",\n      \"ObjectID\": \"\",\n      \"ZoneEnterTime\": \"2024-01-15 08:00:00\",\n      \"EnterAddress\": \"123 Main St\",\n      \"ZoneExitTime\": \"2024-01-15 09:00:00\",\n      \"ExitAddress\": \"123 Main St\",\n      \"ZoneDuration\": 3600\n    }\n  ],\n  \"Summary\": {\n    \"TotalEntries\": 1,\n    \"TotalExists\": 1,\n    \"Zones\": 1,\n    \"Devices\": 1\n  }\n}"},{"id":"0deb3e74-aebd-4c6a-a452-629f23c7f943","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromDateTime is missing or is invalid.\"\n}"}],"_postman_id":"4fc1faa4-bd08-4ddf-9f92-9a0a1003c7f6"},{"name":"Device Activity","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Records\");\n    pm.expect(json).to.have.property(\"Summary\");\n});","pm.test(\"Summary has TotalActiveDevices\", function () {\n    pm.expect(pm.response.json().Summary).to.have.property(\"TotalActiveDevices\");\n});"],"id":"180ae74e-56a1-4905-bd06-265e16f59958"}}],"id":"64579e43-9265-4809-b401-54fb7bd8058e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Report/DeviceActivity?FromDateTime=2024-01-01 00:00:00&ToDateTime=2024-01-31 23:59:59&CustomerID=&Objects=","description":"<p>Per-device activity summary with distance and events.</p>\n","urlObject":{"path":["Report","DeviceActivity"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-01 00:00:00"},{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ToDateTime","value":"2024-01-31 23:59:59"},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"CustomerID","value":""},{"description":{"content":"<p>Optional comma-separated</p>\n","type":"text/plain"},"key":"Objects","value":""}],"variable":[]}},"response":[{"id":"745d0f3f-7acf-4af5-bc44-b38251da1843","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Records\": [\n    {\n      \"DeviceName\": \"Truck 01\",\n      \"IMEI\": \"123456789012345\",\n      \"CustomerName\": \"Acme Corp\",\n      \"ActiveTime\": 86400,\n      \"InactiveTime\": 172800,\n      \"Distance\": 1200,\n      \"EventCount\": 15\n    }\n  ],\n  \"Summary\": {\n    \"TotalActiveDevices\": 1,\n    \"TotalActiveTime\": 86400,\n    \"TotalDistance\": 1200,\n    \"TotalEvents\": 15\n  }\n}"},{"id":"7e7a8f1e-4023-4a1f-affc-906ab3e23702","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromDateTime is missing or invalid.\"\n}"}],"_postman_id":"64579e43-9265-4809-b401-54fb7bd8058e"},{"name":"Stats Overview","event":[{"listen":"test","script":{"type":"text/javascript","exec":["pm.test(\"Status code is 200\", function () { pm.response.to.have.status(200); });","pm.test(\"Response is JSON\", function () {\n    pm.response.to.have.header(\"Content-Type\");\n    pm.response.to.be.json;\n});","pm.test(\"Response time under 5000ms\", function () {\n    pm.expect(pm.response.responseTime).to.be.below(5000);\n});","pm.test(\"Response has required fields\", function () {\n    var json = pm.response.json();\n    pm.expect(json).to.have.property(\"Totals\");\n    pm.expect(json).to.have.property(\"Events\");\n    pm.expect(json).to.have.property(\"PeriodHighest\");\n    pm.expect(json).to.have.property(\"EventHighest\");\n});","pm.test(\"Totals is an array\", function () {\n    pm.expect(pm.response.json().Totals).to.be.an(\"array\");\n});"],"id":"1987bc08-b9cc-416e-a087-2cad32863afb"}}],"id":"f3c99b08-d2b8-4df3-9d01-0b4906496cf3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"apikey","value":"","type":"text"},{"key":"token","value":"","type":"text"}],"url":"https://api.example.com/Report/StatsOverview?FromDateTime=2024-01-01 00:00:00&ToDateTime=2024-01-07 23:59:59&CustomerID=&Group=1","description":"<p>Event statistics overview with daily trend comparison.</p>\n","urlObject":{"path":["Report","StatsOverview"],"host":["https://api.example.com"],"query":[{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"FromDateTime","value":"2024-01-01 00:00:00"},{"description":{"content":"<p>Required</p>\n","type":"text/plain"},"key":"ToDateTime","value":"2024-01-07 23:59:59"},{"description":{"content":"<p>Optional</p>\n","type":"text/plain"},"key":"CustomerID","value":""},{"description":{"content":"<p>Comma-separated stat categories</p>\n","type":"text/plain"},"key":"Group","value":"1"}],"variable":[]}},"response":[{"id":"7f2f9884-eb77-4a1d-9fc5-7f825c394f1c","name":"200 OK","originalRequest":{"header":[],"url":""},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Totals\": [\n    {\n      \"Period\": \"Mon(01/01)\",\n      \"Now\": 12,\n      \"Prev\": 10\n    }\n  ],\n  \"Events\": {\n    \"Brake\": {\n      \"Now\": 5,\n      \"Prev\": 3,\n      \"Percent\": \"66.7 %\",\n      \"Difference\": 2\n    }\n  },\n  \"PeriodHighest\": {\n    \"Day\": \"Mon(01/01)\",\n    \"Count\": 12,\n    \"Percent\": \"100.0\"\n  },\n  \"EventHighest\": {\n    \"EventName\": \"Brake\",\n    \"Count\": 5,\n    \"Percent\": \"41.7\"\n  }\n}"},{"id":"fdfab9ab-2a77-4c34-93b1-41be05a36c86","name":"400 Bad Request","originalRequest":{"header":[],"url":""},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"Code\": 400,\n  \"Message\": \"FromDateTime is missing or invalid.\"\n}"}],"_postman_id":"f3c99b08-d2b8-4df3-9d01-0b4906496cf3"}],"id":"1dbc237f-be48-48ab-9c37-e58df2e27a6d","_postman_id":"1dbc237f-be48-48ab-9c37-e58df2e27a6d","description":""}],"event":[{"listen":"prerequest","script":{"type":"text/javascript","packages":{},"requests":{},"exec":[""],"id":"acb4f71c-1298-4572-826c-5b3a808c101a"}},{"listen":"test","script":{"type":"text/javascript","packages":{},"requests":{},"exec":[""],"id":"127ce6be-5520-4717-903b-9458b7146477"}}],"variable":[{"id":"5fb42fd5-f612-41b4-ac57-5b370877ef24","key":"base_url","value":"https://api.example.com"},{"id":"5b491216-b918-45c6-9868-59c59600f67f","key":"customer_id","value":""},{"id":"a065db67-12ea-4007-a46d-b573a591d432","key":"parent_customer_id","value":""},{"id":"f08b15c9-655e-4616-aa34-83e5bfec25a3","key":"target_customer_id","value":""},{"id":"5c6a5fbe-bd82-46e1-86ee-a8646935503f","key":"object_id","value":""},{"id":"56d776ac-b7fa-4573-b15b-8f680ac38df7","key":"user_id","value":""},{"id":"45f36ba1-0bbd-41ec-9575-e2dd60c4947a","key":"event_id","value":""},{"id":"136dc2d3-87f0-453b-bdc3-83dc3cc032e1","key":"event_type_id","value":""},{"id":"8daa39cf-e738-407b-8071-35a5a618587b","key":"resolve_type_id","value":""},{"id":"96a5eb6e-6103-4161-9f0b-4a1184accde4","key":"trip_id","value":""},{"id":"79987b79-4d39-45fe-a49a-ae3e0dbf35d3","key":"request_id","value":""},{"id":"4d5d0950-c4a5-4e74-80db-45d96b8daed4","key":"geofence_id","value":""},{"id":"2cf28f8a-e5cb-4c1b-a48e-7bbb9ad3b465","key":"notification_id","value":""},{"id":"06204453-87b9-4a8b-a160-e4315efd2e9a","key":"endpoint_id","value":""},{"id":"76365d7e-0726-449d-8d5d-2e0d45b38ae7","key":"apikey","value":""},{"id":"345aad4f-16bd-4d71-b06a-2f91fecd8eb8","key":"token","value":""},{"id":"e1ad0c24-b755-4dad-b523-cb70ccd9c847","key":"commit_id","value":"unknown"},{"id":"8d60a0f6-371d-41b3-b8da-8e64adb83cdf","key":"commit_date","value":"unknown"}]}