{"info":{"_postman_id":"bce16032-b5b4-4e2c-a6f8-ae1621f5ac68","name":"X1, X1 Ultra, MAX & X4 Ultra* & X5 Ultra Cameras.","description":"<html><head></head><body><p>This is a sample BirdDog API server for the X Series of cameras.</p>\n<p>The following are RESTful GET or POST API calls. Successful returns from the API server will have a response code of 200. Returns in the response body that will either be:</p>\n<ul>\n<li><p>JSON with the header being \"application/json\"</p>\n</li>\n<li><p>Or plain text with the header \"text/plain\"</p>\n</li>\n</ul>\n<p>All BirdDog RESTful API calls (GET &amp; POST) are made to port \"8080\"</p>\n<p>You can find out more about BirdDog Products at <a href=\"https://birddog.tv/\">BirdDog.tv</a></p>\n<p>Contact Support: <a href=\"https://mailto:help@bird-dog.tv\">Help@BirdDog.tv</a></p>\n<p>* → Full API support for the X4 Ultra to be included in an upcoming firmware updates</p>\n<p>The BirdDog API 2.1 is now fully supportted on the X5 Ultra (from firmware 6.1.034)</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"29602224","collectionId":"bce16032-b5b4-4e2c-a6f8-ae1621f5ac68","publishedId":"2sAYHxn45i","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"22b24c"},"publishDate":"2025-01-16T03:50:39.000Z"},"item":[{"name":"Device Information","item":[{"name":"About","item":[{"name":"about","event":[{"listen":"test","script":{"id":"672223f8-1e46-43d5-bf44-51d17df5784c","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"Hardware\")","","// Start of API tests","// Tests common to all cameras","const nonEmptyStrings = [\"FirmwareVersion\", \"Format\", \"HardwareVersion\"]","const ipAddresses = [\"FallbackIP\", \"GateWay\", \"IPAddress\", \"NetworkMask\", \"Dns\"]","","","jsonSchemaVerification.validateJsonSchema(response, schema)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","for (const key of ipAddresses) {","    testResorces.formattedIpAddress(responseJson, key)","}","","for (const key of nonEmptyStrings) {","    testResorces.nonEmptyString(responseJson, key)","}","","testResorces.shouldBeOneOf(responseJson, \"NetworkConfigMethod\", [\"dhcp\", \"static\"])","testResorces.isAlphanumricString(responseJson, \"HostName\")","testResorces.validSerialNumber(responseJson, \"SerialNumber\")","testResorces.shouldBeOneOf(responseJson, \"Status\", [\"Initializing\", \"Streaming NDI\", \"Ready to Connect\", \"Active\"])","","//X1 & X1 Ultra tests","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog X4 Ultra') {","    const wifiIpAddresss= [\"WifiIPAddress\", \"WifiMask\"]","    for (const key of wifiIpAddresss) {","        testResorces.formattedIpAddress(responseJson, key)","    }","","    testResorces.shouldBeOneOf(responseJson, \"WifiConfigMethod\", [\"dhcp\", \"static\"])","}","","// MAX specific tests","// if (HardwareVersion === 'BirdDog MAX'){","//     jsonSchemaVerification.retunrDoesNOTincludeKeys(responseJson, \"WifiIPAddress\", \"WifiMask\", \"WifiConfigMethod\")","// }",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}},"requests":{}}},{"listen":"prerequest","script":{"id":"4654592d-4fe1-44d9-ab09-1f9502faa07b","exec":["pm.environment.set(\"skipTests\", false)\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra'){\r","    var schema = {\r","      \"type\": \"object\",\r","      \"properties\": {\r","        \"FallbackIP\": {\r","          \"type\": \"string\"\r","        },\r","        \"FirmwareVersion\": {\r","          \"type\": \"string\"\r","        },\r","        \"Format\": {\r","          \"type\": \"string\"\r","        },\r","        \"GateWay\": {\r","          \"type\": \"string\"\r","        },\r","        \"HardwareVersion\": {\r","        \"type\": \"string\"\r","        },\r","        \"HostName\": {\r","        \"type\": \"string\"\r","        },\r","        \"IPAddress\": {\r","        \"type\": \"string\"\r","        },\r","        \"MCUVersion\": {\r","        \"type\": \"string\"\r","        },\r","        \"NetworkConfigMethod\": {\r","        \"type\": \"string\"\r","        },\r","        \"NetworkMask\": {\r","        \"type\": \"string\"\r","        },\r","        \"SerialNumber\": {\r","        \"type\": \"string\"\r","        },\r","        \"Status\": {\r","        \"type\": \"string\"\r","        },\r","        \"WifiConfigMethod\": {\r","        \"type\": \"string\"\r","        },\r","        \"WifiIPAddress\": {\r","        \"type\": \"string\"\r","        },\r","        \"WifiMask\": {\r","        \"type\": \"string\"\r","        },\r","        \"Dns\": {\r","        \"type\": \"string\"\r","        }\r","    },\r","    \"required\": [\r","        \"FallbackIP\",\r","        \"FirmwareVersion\",\r","        \"Format\",\r","        \"GateWay\",\r","        \"HardwareVersion\",\r","        \"HostName\",\r","        \"IPAddress\",\r","        \"MCUVersion\",\r","        \"NetworkConfigMethod\",\r","        \"NetworkMask\",\r","        \"SerialNumber\",\r","        \"Status\",\r","        \"WifiConfigMethod\",\r","        \"WifiIPAddress\",\r","        \"WifiMask\",\r","        \"Dns\"\r","        ]\r","        }\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    var schema = {\r","      \"type\": \"object\",\r","      \"properties\": {\r","        \"FallbackIP\": {\r","          \"type\": \"string\"\r","        },\r","        \"FirmwareVersion\": {\r","          \"type\": \"string\"\r","        },\r","        \"Format\": {\r","          \"type\": \"string\"\r","        },\r","        \"GateWay\": {\r","          \"type\": \"string\"\r","        },\r","        \"HardwareVersion\": {\r","        \"type\": \"string\"\r","        },\r","        \"HostName\": {\r","        \"type\": \"string\"\r","        },\r","        \"IPAddress\": {\r","        \"type\": \"string\"\r","        },\r","        \"NetworkConfigMethod\": {\r","        \"type\": \"string\"\r","        },\r","        \"NetworkMask\": {\r","        \"type\": \"string\"\r","        },\r","        \"SerialNumber\": {\r","        \"type\": \"string\"\r","        },\r","        \"Status\": {\r","        \"type\": \"string\"\r","        },\r","        \"WifiConfigMethod\": {\r","        \"type\": \"string\"\r","        },\r","        \"WifiIPAddress\": {\r","        \"type\": \"string\"\r","        },\r","        \"WifiMask\": {\r","        \"type\": \"string\"\r","        },\r","        \"Dns\": {\r","        \"type\": \"string\"\r","        }\r","    },\r","    \"required\": [\r","        \"FallbackIP\",\r","        \"FirmwareVersion\",\r","        \"Format\",\r","        \"GateWay\",\r","        \"HardwareVersion\",\r","        \"HostName\",\r","        \"IPAddress\",\r","        \"NetworkConfigMethod\",\r","        \"NetworkMask\",\r","        \"SerialNumber\",\r","        \"Status\",\r","        \"WifiConfigMethod\",\r","        \"WifiIPAddress\",\r","        \"WifiMask\",\r","        \"Dns\"\r","        ]\r","        }\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"FallbackIP\": {\r","      \"type\": \"string\"\r","    },\r","    \"FirmwareVersion\": {\r","      \"type\": \"string\"\r","    },\r","    \"Format\": {\r","      \"type\": \"string\"\r","    },\r","    \"GateWay\": {\r","      \"type\": \"string\"\r","    },\r","    \"HardwareVersion\": {\r","      \"type\": \"string\"\r","    },\r","    \"HostName\": {\r","      \"type\": \"string\"\r","    },\r","    \"IPAddress\": {\r","      \"type\": \"string\"\r","    },\r","    \"NetworkConfigMethod\": {\r","      \"type\": \"string\"\r","    },\r","    \"NetworkMask\": {\r","      \"type\": \"string\"\r","    },\r","    \"SerialNumber\": {\r","      \"type\": \"string\"\r","    },\r","    \"Status\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"FallbackIP\",\r","    \"FirmwareVersion\",\r","    \"Format\",\r","    \"GateWay\",\r","    \"HardwareVersion\",\r","    \"HostName\",\r","    \"IPAddress\",\r","    \"NetworkConfigMethod\",\r","    \"NetworkMask\",\r","    \"SerialNumber\",\r","    \"Status\",\r","    \"Dns\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","\r","if (HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"FallbackIP\": {\r","      \"type\": \"string\"\r","    },\r","    \"FirmwareVersion\": {\r","      \"type\": \"string\"\r","    },\r","    \"Format\": {\r","      \"type\": \"string\"\r","    },\r","    \"GateWay\": {\r","      \"type\": \"string\"\r","    },\r","    \"HardwareVersion\": {\r","      \"type\": \"string\"\r","    },\r","    \"HostName\": {\r","      \"type\": \"string\"\r","    },\r","    \"IPAddress\": {\r","      \"type\": \"string\"\r","    },\r","    \"MCUVersion\": {\r","      \"type\": \"string\"\r","    },\r","    \"NetworkConfigMethod\": {\r","      \"type\": \"string\"\r","    },\r","    \"NetworkMask\": {\r","      \"type\": \"string\"\r","    },\r","    \"SerialNumber\": {\r","      \"type\": \"string\"\r","    },\r","    \"Status\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"FallbackIP\",\r","    \"FirmwareVersion\",\r","    \"Format\",\r","    \"GateWay\",\r","    \"HardwareVersion\",\r","    \"HostName\",\r","    \"IPAddress\",\r","    \"MCUVersion\",\r","    \"NetworkConfigMethod\",\r","    \"NetworkMask\",\r","    \"SerialNumber\",\r","    \"Status\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"0620d5aa-bc9f-4f5f-895b-2dab7a8f7828","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/about","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["about"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"b1a01d96-7a5a-4145-9be0-6b5857390bf5","name":"X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text","disabled":true}],"url":"{{BASE-URL}}:8080/about"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Tue, 04 Feb 2025 09:06:39 GMT"},{"key":"Content-Length","value":"436"}],"cookie":[],"responseTime":null,"body":"{\n    \"FallbackIP\": \"192.168.100.100\",\n    \"FirmwareVersion\": \"BirdDog X1 Ultra 5.6.057\",\n    \"Format\": \"CAM HX\",\n    \"GateWay\": \"192.168.23.1\",\n    \"HardwareVersion\": \"BirdDog X1 Ultra\",\n    \"HostName\": \"birddog-608F9\",\n    \"IPAddress\": \"192.168.23.75\",\n    \"MCUVersion\": \"5\",\n    \"NetworkConfigMethod\": \"static\",\n    \"NetworkMask\": \"255.255.255.0\",\n    \"SerialNumber\": \"8027b62608f9\",\n    \"Status\": \"Active\",\n    \"WifiConfigMethod\": \"static\",\n    \"WifiIPAddress\": \"192.168.100.101\",\n    \"WifiMask\": \"255.255.255.0\",\n    \"Dns\": \"\"\n}"}],"_postman_id":"0620d5aa-bc9f-4f5f-895b-2dab7a8f7828"}],"id":"23c787ea-672f-4cef-ad6a-8026d1f53753","description":"<p>Retrieve Basic Information from your BirdDog Device.</p>\n<p>header = \"application/json\"</p>\n<p>Response may contain (see examples for specifics):</p>\n<p><strong>All Cameras including MAX &amp; X5 Ultra:</strong></p>\n<ul>\n<li><p>\"FallbackIP\" → Current fallback IP address e.g. \"192.168.100.100\"</p>\n</li>\n<li><p>\"FirmwareVersion\" → Installed firmware version</p>\n</li>\n<li><p>\"Format\" → NDI stream name</p>\n</li>\n<li><p>\"GateWay\" → Current gateway address e.g. \"192.168.100.1\"</p>\n</li>\n<li><p>\"HardwareVersion\" → Device hardware version</p>\n</li>\n<li><p>\"HostName\" → System (mDNS) name of the device</p>\n</li>\n<li><p>\"IPAddress\" → Current IP address e.g. \"192.168.100.100\"</p>\n</li>\n<li><p>\"MCUVersion\" → Currently installed MCU version</p>\n</li>\n<li><p>\"NetworkConfigMethod\" → \"dhcp\" or \"static\"</p>\n</li>\n<li><p>\"NetworkMask\" → Current network mask e.g. \"255.255.255.0\"</p>\n</li>\n<li><p>\"Dns\" → Current DNS IP address e.g. \"9.9.9.9\"</p>\n</li>\n<li><p>\"SerialNumber\" → Device's MAC address</p>\n</li>\n<li><p>\"Status\" → Current status of the Birddog CamApp → \"Initializing\", \"Streaming NDI\", \"Ready to Connect\"</p>\n</li>\n</ul>\n<p><strong>X1, X1 Ultra &amp; X4 Ultra:</strong></p>\n<ul>\n<li><p>\"WifiConfigMethod\" → \"dhcp\" or \"static\"</p>\n</li>\n<li><p>\"WifiIPAddress\" → Current WiFi IP address e.g. \"192.168.100.101\"</p>\n</li>\n<li><p>\"WifiMask\" → Current Wi-Fi network mask e.g. \"255.255.255.0\"</p>\n</li>\n</ul>\n","_postman_id":"23c787ea-672f-4cef-ad6a-8026d1f53753"},{"name":"Version","item":[{"name":"version","event":[{"listen":"test","script":{"id":"e09187dd-4389-4bde-886e-16123372bcac","exec":["const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses')\r","const response = pm.response;\r","const header = \"text/plain\"\r","// const deviceList = pm.collectionVariables.get('hardware_id')\r","\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOfText(response, response.text(), [\"BirdDog X1\", \"BirdDog X1 Ultra\", \"BirdDog x5 Ultra\", \"BirdDog MAX\", \"BirdDog X4 Ultra\", \"BirdDog X4E Ultra\", \"BirdDog MAKI 12x\", \"BirdDog MAKI 20x\", \"BirdDog XL Ultra\"])"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}},"requests":{}}},{"listen":"prerequest","script":{"id":"4fc476dc-2379-432b-a43d-4e9ec02e6dc5","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"bffea00a-5ec4-4a04-9c91-34b4d4ac4d95","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/version","description":"<p>Response body header = \"text/plain\"</p>\n","urlObject":{"port":"8080","path":["version"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"66434322-2b0b-451a-9895-75350b5b8d63","name":"X1 & X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/version"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"text/plain","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 09:36:35 GMT","enabled":true},{"key":"Content-Length","value":"10","enabled":true}],"cookie":[],"responseTime":null,"body":"BirdDog X1"}],"_postman_id":"bffea00a-5ec4-4a04-9c91-34b4d4ac4d95"}],"id":"80247c6c-eb41-4050-887b-6a0e40f2ca5e","description":"<p>This command will be a text return of the BirdDog hardware identifier, this includes the model number as well as the hardware version.</p>\n<p>header = \"text/plain; charset=utf-8\"</p>\n","_postman_id":"80247c6c-eb41-4050-887b-6a0e40f2ca5e"},{"name":"Hostname","item":[{"name":"hostname","event":[{"listen":"test","script":{"id":"408ca3c5-549d-4454-878e-6974cda9d8c4","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseText = response.text();\r","const header = \"text/plain\";\r","const Version = \"1.0\"; // Define Version\r","\r","jsonRestResponses.validateStatusCode(response, 200);\r","jsonRestResponses.validateHeader(response, header);\r","\r","pm.test(\"Response text is not empty\", function () {\r","    pm.expect(responseText).to.not.be.empty;\r","});"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"8939fbb4-a874-4601-a480-60c7325a52ad","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"53612ab5-cb94-4abb-b3fa-3737282b2223","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/hostname","description":"<p>Response body header = \"text/plain\"</p>\n","urlObject":{"port":"8080","path":["hostname"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"1099fa86-ca21-4008-945d-aa7e0e5bd808","name":"All Cameras","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/hostname"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"text/plain","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 09:37:51 GMT","enabled":true},{"key":"Content-Length","value":"8","enabled":true}],"cookie":[],"responseTime":null,"body":"x1-046CE"}],"_postman_id":"53612ab5-cb94-4abb-b3fa-3737282b2223"}],"id":"3a7d0ad5-7386-46d7-b14c-c8823074606d","description":"<p>Retrieve BirdDog Device Name.</p>\n<p>Hostname of the device, this can be set through the BirdUI under Network → Network Details → BirdDog Name.</p>\n<p>header = \"text/plain; charset=utf-8\"</p>\n","_postman_id":"3a7d0ad5-7386-46d7-b14c-c8823074606d"},{"name":"Operation Mode","item":[{"name":"operationmode","event":[{"listen":"test","script":{"id":"226e2537-c00d-40e8-9a52-5acc6a0d3bac","exec":["const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses')\r","const response = pm.response;\r","const header = \"text/plain\"\r","// const deviceList = pm.collectionVariables.get('hardware_id')\r","\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOfText(response, \"operationmode\", [\"encode\", \"decode\", \"dual\"])"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"04f7e826-581f-49c1-abef-63a6a7eba44c","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"8e1be22f-6e8d-42fa-8474-0da836d11fc3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"text","type":"text"}],"url":"{{BASE-URL}}:8080/operationmode","description":"<p>Response body header = \"text/plain\"</p>\n","urlObject":{"port":"8080","path":["operationmode"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"2a2d5332-dda1-4168-afe5-13f44057691c","name":"X1 & X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text","type":"text"}],"url":"{{BASE-URL}}:8080/operationmode"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"text/plain","enabled":true},{"key":"Date","value":"Mon, 07 Oct 2024 07:07:34 GMT","enabled":true},{"key":"Content-Length","value":"6","enabled":true}],"cookie":[],"responseTime":null,"body":"encode"},{"id":"21959701-ba9b-4c4b-b40e-4181887618e6","name":"X5 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/operationmode"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Content-Type","value":"text/plain; charset=utf-8"},{"key":"Date","value":"Mon, 26 May 2025 00:29:17 GMT"},{"key":"Content-Length","value":"4"}],"cookie":[],"responseTime":null,"body":"dual"}],"_postman_id":"8e1be22f-6e8d-42fa-8474-0da836d11fc3"},{"name":"operationmode","event":[{"listen":"test","script":{"id":"226e2537-c00d-40e8-9a52-5acc6a0d3bac","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses')\r","const response = pm.response;\r","const header = \"text/plain\"\r","// const deviceList = pm.collectionVariables.get('hardware_id')\r","\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOfText(response, \"operationmode\", [\"encode\", \"decode\", \"dual\"])"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"04f7e826-581f-49c1-abef-63a6a7eba44c","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog MAX'){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{}}}],"id":"8e2a6ef4-b565-4137-90c9-3517f07759c7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"encode","options":{"raw":{"language":"text"}}},"url":"{{BASE-URL}}:8080/operationmode","description":"<p>Response body header = \"text/plain\"</p>\n","urlObject":{"port":"8080","path":["operationmode"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"63d4749c-cc2e-4ce9-bf05-a23a8d4873dc","name":"X1 & X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/operationmode"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"text/plain"},{"key":"Date","value":"Mon, 07 Oct 2024 07:07:34 GMT"},{"key":"Content-Length","value":"6"}],"cookie":[],"responseTime":null,"body":"encode"}],"_postman_id":"8e2a6ef4-b565-4137-90c9-3517f07759c7"}],"id":"4bfd7983-7fb0-42f3-947a-aa712aa9eec9","description":"<p>Shows you which mode your BirdDog device is operating in - encode, decode or dual.</p>\n<p>header = \"text/plain; charset=utf-8\"</p>\n<ul>\n<li><p>encode = All outputs are showing the camera head video.</p>\n</li>\n<li><p>decode = SDI/HDMI outputs and set to decoder, camera head video is being encoded to NDI|HX.</p>\n</li>\n<li><p>dual = X5 ONLY - the X5 always operates with the ability output the encoded stream on HDMI 1 and a decoded stream on HDMI 2</p>\n</li>\n</ul>\n<p>GET - Retrieve Current Operation Mode of your BirdDog Device in plain text(encode, decode or dual).</p>\n<p><strong>X1, X1 Ultra &amp; MAX</strong> → \"encode\" or \"decode\"</p>\n<p><strong>X4 Ultra</strong> → \"encode\"</p>\n<p><strong>X5 Ultra → \"dual\"</strong></p>\n<p>POST - Set Base Operation Modes of your BirdDog Device.</p>\n<p><strong>X1, X1 Ultra &amp; MAX:</strong></p>\n<ul>\n<li>To POST to this API put the string \"encode\" or \"decode\" in the body of the API as text, see example.</li>\n</ul>\n","_postman_id":"4bfd7983-7fb0-42f3-947a-aa712aa9eec9"}],"id":"ee0e6c37-2251-4c77-b74b-78a96958801d","description":"<p>This folder contains GET and POST requests that pertain to the basic operation of the device.</p>\n","_postman_id":"ee0e6c37-2251-4c77-b74b-78a96958801d"},{"name":"Network Settings","item":[{"name":"Ethernet Setup","item":[{"name":"EthSetup","event":[{"listen":"test","script":{"id":"d7ab014e-3cf5-4ccc-a79b-85eb2ab8bd62","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"IpMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"IpAddr\": {\r","      \"type\": \"string\"\r","    },\r","    \"NetMask\": {\r","      \"type\": \"string\"\r","    },\r","    \"GateWayIp\": {\r","      \"type\": \"string\"\r","    },\r","    \"DnsSvrIpFirst\": {\r","      \"type\": \"string\"\r","    },\r","    \"DnsSvrIpSecond\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpTimeout\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpFallbackIPAddr\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpFallbackNetMask\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpFallbackGateWayIp\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"IpMode\",\r","    \"IpAddr\",\r","    \"NetMask\",\r","    \"GateWayIp\",\r","    \"DnsSvrIpFirst\",\r","    \"DnsSvrIpSecond\",\r","    \"DhcpTimeout\",\r","    \"DhcpFallbackIPAddr\",\r","    \"DhcpFallbackNetMask\",\r","    \"DhcpFallbackGateWayIp\"\r","  ]\r","}\r","\r","\r","const ipAddresses = [\"IpAddr\", \"NetMask\", \"GateWayIp\", \"DnsSvrIpFirst\", \"DnsSvrIpSecond\", \"DhcpFallbackIPAddr\", \"DhcpFallbackNetMask\", \"DhcpFallbackGateWayIp\"]\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","for (const key of ipAddresses) {\r","    testResorces.formattedIpAddress(responseJson, key)\r","}\r","\r","testResorces.shouldBeOneOf(responseJson, \"IpMode\", [\"dhcp\", \"static\"])\r","\r","testResorces.isNumericString(responseJson, \"DhcpTimeout\")"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"c2787a95-7b46-47cb-a59f-f2ef8aabf220","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"8122909c-1309-453d-bb09-f9342c8f941d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/EthSetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["EthSetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"d4e9c506-6415-4446-bde9-963e3e7600f8","name":"All Cameras","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/EthSetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 09:41:12 GMT","enabled":true},{"key":"Content-Length","value":"284","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"IpMode\": \"dhcp\",\n    \"IpAddr\": \"192.168.20.46\",\n    \"NetMask\": \"255.255.255.0\",\n    \"GateWayIp\": \"192.168.20.20\",\n    \"DnsSvrIpFirst\": \"9.9.9.9\",\n    \"DnsSvrIpSecond\": \"1.1.1.1\",\n    \"DhcpTimeout\": \"30\",\n    \"DhcpFallbackIPAddr\": \"192.168.100.100\",\n    \"DhcpFallbackNetMask\": \"255.255.255.0\",\n    \"DhcpFallbackGateWayIp\": \"192.168.1.1\"\n}"}],"_postman_id":"8122909c-1309-453d-bb09-f9342c8f941d"},{"name":"EthSetup","event":[{"listen":"test","script":{"id":"d7ab014e-3cf5-4ccc-a79b-85eb2ab8bd62","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"IpMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"IpAddr\": {\r","      \"type\": \"string\"\r","    },\r","    \"NetMask\": {\r","      \"type\": \"string\"\r","    },\r","    \"GateWayIp\": {\r","      \"type\": \"string\"\r","    },\r","    \"DnsSvrIpFirst\": {\r","      \"type\": \"string\"\r","    },\r","    \"DnsSvrIpSecond\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpTimeout\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpFallbackIPAddr\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpFallbackNetMask\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpFallbackGateWayIp\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"IpMode\",\r","    \"IpAddr\",\r","    \"NetMask\",\r","    \"GateWayIp\",\r","    \"DnsSvrIpFirst\",\r","    \"DnsSvrIpSecond\",\r","    \"DhcpTimeout\",\r","    \"DhcpFallbackIPAddr\",\r","    \"DhcpFallbackNetMask\",\r","    \"DhcpFallbackGateWayIp\"\r","  ]\r","}\r","\r","\r","const ipAddresses = [\"IpAddr\", \"NetMask\", \"GateWayIp\", \"DnsSvrIpFirst\", \"DnsSvrIpSecond\", \"DhcpFallbackIPAddr\", \"DhcpFallbackNetMask\", \"DhcpFallbackGateWayIp\"]\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","for (const key of ipAddresses) {\r","    testResorces.formattedIpAddress(responseJson, key)\r","}\r","\r","testResorces.shouldBeOneOf(responseJson, \"IpMode\", [\"dhcp\", \"static\"])\r","\r","testResorces.isNumericString(responseJson, \"DhcpTimeout\")"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}},"requests":{}}},{"listen":"prerequest","script":{"id":"5f0b4c8e-b530-4c3e-b913-bd60cbf93793","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"d1993817-38be-41e6-8da4-e07af2e47682","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"DhcpFallbackIPAddr\": \"192.168.100.100\"\r\n} ","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/EthSetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["EthSetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"d50c4384-a051-46ef-8e54-7ff7b24d07c8","name":"All Cameras","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"DhcpTimeout\": \"33\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/EthSetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 09:41:59 GMT","enabled":true},{"key":"Content-Length","value":"284","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"IpMode\": \"dhcp\",\n    \"IpAddr\": \"192.168.20.46\",\n    \"NetMask\": \"255.255.255.0\",\n    \"GateWayIp\": \"192.168.20.20\",\n    \"DnsSvrIpFirst\": \"9.9.9.9\",\n    \"DnsSvrIpSecond\": \"1.1.1.1\",\n    \"DhcpTimeout\": \"33\",\n    \"DhcpFallbackIPAddr\": \"192.168.100.100\",\n    \"DhcpFallbackNetMask\": \"255.255.255.0\",\n    \"DhcpFallbackGateWayIp\": \"192.168.1.1\"\n}"}],"_postman_id":"d1993817-38be-41e6-8da4-e07af2e47682"}],"id":"17cb4273-6c82-4e61-a903-ef19a183e32b","description":"<p>GET - Retrieve Ethernet settings.</p>\n<p>POST - Set Ethernet settings</p>\n<p>header = \"application/json\"</p>\n<p>Response contains:</p>\n<p><strong>All Cameras</strong></p>\n<ul>\n<li><p>\"IpMode\" → GET &amp; POST \"dhcp\" or \"static\" (Set IP addressing)</p>\n</li>\n<li><p>\"IpAddr\" → GET current IP address, POST static IP address</p>\n</li>\n<li><p>\"NetMask\" → GET current subnet mask, POST static subnet mask</p>\n</li>\n<li><p>\"GateWayIp\" → GET current gateway IP, POST static gateway IP</p>\n</li>\n<li><p>\"DnsSvrIpFirst: → GET current DNS address, POST static DNS address</p>\n</li>\n<li><p>\"DnsSvrIpSecond\" → GET current DNS address, POST static DNS address</p>\n</li>\n<li><p>\"DhcpTimeout\" → Time in seconds for DHCP timeout: Range 0 to 255</p>\n</li>\n<li><p>\"DhcpFallbackIPAddr\" → GET &amp; POST fallback IP address</p>\n</li>\n<li><p>\"DhcpFallbackNetMask\" → GET &amp; POST fallback network mask</p>\n</li>\n<li><p>\"DhcpFallbackGateWayIp\" → GET &amp; POST fallback gateway IP address</p>\n</li>\n</ul>\n","_postman_id":"17cb4273-6c82-4e61-a903-ef19a183e32b"},{"name":"WiFi Setup","item":[{"name":"WifiSetup","event":[{"listen":"test","script":{"id":"00aa5bd9-80b5-45e7-beed-bd21d12d20c3","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Enable\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpEnable\": {\r","      \"type\": \"string\"\r","    },\r","    \"Ssid\": {\r","      \"type\": \"string\"\r","    },\r","    \"IpAddr\": {\r","      \"type\": \"string\"\r","    },\r","    \"NetMask\": {\r","      \"type\": \"string\"\r","    },\r","    \"GateWayIp\": {\r","      \"type\": \"string\"\r","    },\r","    \"Dns\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Enable\",\r","    \"DhcpEnable\",\r","    \"Ssid\",\r","    \"IpAddr\",\r","    \"NetMask\",\r","    \"GateWayIp\",\r","    \"Dns\"\r","  ]\r","};\r","\r","const ipAddresses = [\"IpAddr\", \"NetMask\", \"GateWayIp\", \"Dns\"]\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","for (const key of ipAddresses) {\r","    testResorces.formattedIpAddress(responseJson, key);\r","}\r","\r","testResorces.shouldBeOneOf(responseJson, \"DhcpEnable\", [\"dhcp\", \"static\"])\r","testResorces.shouldBeOneOf(responseJson, \"Enable\", [\"On\", \"Off\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}},"requests":{}}},{"listen":"prerequest","script":{"id":"5a5ceaa8-4c47-4691-b6c9-c24cee5d301c","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra' || HardwareVersion === \"BirdDog MAX\" || HardwareVersion === \"BirdDog XL Ultra\"){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"a3cc00be-eaa0-49ec-b8bd-c44d6d34fc92","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/WifiSetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["WifiSetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"6ddb7834-182f-40f7-ba87-7a279ef349a9","name":"X1 & X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/WifiSetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 09:45:03 GMT","enabled":true},{"key":"Content-Length","value":"158","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"Enable\": \"1\",\n    \"DhcpEnable\": \"1\",\n    \"EncryptMode\": \"None\",\n    \"Ssid\": \"\",\n    \"IpAddr\": \"192.168.100.101\",\n    \"NetMask\": \"255.255.255.0\",\n    \"GateWayIp\": \"192.168.1.1\",\n    \"Dns\": \"9.9.9.9\"\n}"}],"_postman_id":"a3cc00be-eaa0-49ec-b8bd-c44d6d34fc92"},{"name":"WifiSetup","event":[{"listen":"test","script":{"id":"00aa5bd9-80b5-45e7-beed-bd21d12d20c3","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Enable\": {\r","      \"type\": \"string\"\r","    },\r","    \"DhcpEnable\": {\r","      \"type\": \"string\"\r","    },\r","    \"Ssid\": {\r","      \"type\": \"string\"\r","    },\r","    \"IpAddr\": {\r","      \"type\": \"string\"\r","    },\r","    \"NetMask\": {\r","      \"type\": \"string\"\r","    },\r","    \"GateWayIp\": {\r","      \"type\": \"string\"\r","    },\r","    \"Dns\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Enable\",\r","    \"DhcpEnable\",\r","    \"Ssid\",\r","    \"IpAddr\",\r","    \"NetMask\",\r","    \"GateWayIp\",\r","    \"Dns\"\r","  ]\r","};\r","\r","const ipAddresses = [\"IpAddr\", \"NetMask\", \"GateWayIp\", \"Dns\"]\r","\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","for (const key of ipAddresses) {\r","    testResorces.formattedIpAddress(responseJson, key)\r","}\r","\r","testResorces.shouldBeOneOf(responseJson, \"DhcpEnable\", [\"dhcp\", \"static\"])\r","\r","testResorces.shouldBeOneOf(responseJson, \"Enable\", [\"On\", \"Off\"])"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}},"requests":{}}},{"listen":"prerequest","script":{"id":"a228248f-aed5-48a5-8767-0445acfd8f5a","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra' || HardwareVersion === \"BirdDog MAX\" || HardwareVersion === \"BirdDog XL Ultra\"){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"badc7339-3898-4307-bb28-b12c994747bb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"IpAddr\": \"192.168.100.253\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/WifiSetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["WifiSetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"800731c1-fc04-4b0c-aa76-91f9616b5bfa","name":"X1 & X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"IpAddr\": \"192.168.100.101\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/WifiSetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 09:45:39 GMT","enabled":true},{"key":"Content-Length","value":"158","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"Enable\": \"1\",\n    \"DhcpEnable\": \"1\",\n    \"EncryptMode\": \"None\",\n    \"Ssid\": \"\",\n    \"IpAddr\": \"192.168.100.101\",\n    \"NetMask\": \"255.255.255.0\",\n    \"GateWayIp\": \"192.168.1.1\",\n    \"Dns\": \"9.9.9.9\"\n}"}],"_postman_id":"badc7339-3898-4307-bb28-b12c994747bb"}],"id":"44e98e7d-b397-4d5b-931c-7de9901599ff","description":"<p>GET - Retrieve Wi-Fi settings.</p>\n<p>POST - Set Wi-Fi setting.</p>\n<p>Response contains:</p>\n<p><strong>X1, X1 Ultra &amp; X4 Ultra:</strong></p>\n<ul>\n<li><p>\"Enable\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"DhcpEnable\" → \"dhcp\" or \"static\"</p>\n</li>\n<li><p>\"Ssid\" → GET only - alphanumeric</p>\n</li>\n<li><p>\"IpAddr\" → e.g. \"192.168.100.101\"</p>\n</li>\n<li><p>\"NetMask\" → e.g. \"255.255.255.0\"</p>\n</li>\n<li><p>\"GateWayIp\" → e.g. \"192.168.100.1\"</p>\n</li>\n<li><p>\"Dns\" → e.g. \"9.9.9.9\"</p>\n</li>\n</ul>\n","_postman_id":"44e98e7d-b397-4d5b-931c-7de9901599ff"},{"name":"NDI Discovery Server","item":[{"name":"NDIDisServer","event":[{"listen":"test","script":{"id":"3aba1c7a-77c0-40a0-b099-676358e15572","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"NDIDisServ\": {\r","      \"type\": \"string\"\r","    },\r","    \"NDIDisServIP\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"NDIDisServ\",\r","    \"NDIDisServIP\"\r","  ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"NDIDisServ\", [\"NDIDisServDis\", \"NDIDisServEn\"])\r","\r","testResorces.formattedIpAddress(responseJson, \"NDIDisServIP\")\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"355bc2a2-d211-4889-ab19-03d2b44b2346","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"d100fa4e-ddca-4d4a-ab61-ec5659d2ab62","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/NDIDisServer","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["NDIDisServer"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"6e671e4f-a0b2-4fd1-812f-0a78249bfb22","name":"X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/NDIDisServer"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:08:09 GMT"},{"key":"Content-Length","value":"61"}],"cookie":[],"responseTime":null,"body":"{\n    \"NDIDisServ\": \"NDIDisServDis\",\n    \"NDIDisServIP\": \"192.168.0.21\"\n}"}],"_postman_id":"d100fa4e-ddca-4d4a-ab61-ec5659d2ab62"},{"name":"NDIDisServer","event":[{"listen":"test","script":{"id":"3aba1c7a-77c0-40a0-b099-676358e15572","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"NDIDisServ\": {\r","      \"type\": \"string\"\r","    },\r","    \"NDIDisServIP\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"NDIDisServ\",\r","    \"NDIDisServIP\"\r","  ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"NDIDisServ\", [\"NDIDisServDis\", \"NDIDisServEn\"])\r","\r","testResorces.formattedIpAddress(responseJson, \"NDIDisServIP\")\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"6df2dfdc-c481-4b94-828b-267125d87f15","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"1628ebe3-01a8-4064-966a-68c893b6f1b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"NDIDisServ\": \"NDIDisServDis\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/NDIDisServer","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["NDIDisServer"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"d7f99178-f99f-4f99-b783-2f24e83691bb","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"NDIDisServ\": \"NDIDisServEn\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/NDIDisServer"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:08:32 GMT"},{"key":"Content-Length","value":"61"}],"cookie":[],"responseTime":null,"body":"{\n    \"NDIDisServ\": \"NDIDisServDis\",\n    \"NDIDisServIP\": \"192.168.1.100\"\n}"}],"_postman_id":"1628ebe3-01a8-4064-966a-68c893b6f1b0"}],"id":"e24ba280-ba4c-4432-8819-22d3305be3ba","description":"<p>GET - Retrieve NDI Discovery Server Info.</p>\n<p>POST - Set NDI Discovery Server Info.</p>\n<p>header = \"application/json\"</p>\n<p>Response includes:</p>\n<p><strong>All Cameras:</strong></p>\n<ul>\n<li><p>\"NDIDisServ\" → \"NDIDisServDis\" or \"NDIDisServEn\"</p>\n</li>\n<li><p>\"NDIDisServIP\": e.g. \"192.168.1.100\"</p>\n</li>\n</ul>\n","_postman_id":"e24ba280-ba4c-4432-8819-22d3305be3ba"},{"name":"Network Setup","item":[{"name":"NetworkSetup","event":[{"listen":"test","script":{"id":"9f407a05-8fdf-4b70-a004-987caab8119b","exec":["\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"Hardware\")\r","\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","//Tests for all cameras\r","testResorces.shouldBeOneOf(responseJson, \"PreferredNIC\", [\"Ethernet\", \"WiFi\"])\r","\r","//X4 tests\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    testResorces.shouldBeOneOf(responseJson, \"Dante\", [\"On\", \"Off\"])\r","}\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"2435958f-2681-4216-a87c-9c7665277312","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra' || HardwareVersion === \"BirdDog MAX\"){\r","    pm.environment.set(\"skipTests\", true)\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    var schema = {\r","      \"type\": \"object\",\r","      \"properties\": {\r","        \"Enable\": {\r","          \"type\": \"string\"\r","        },\r","        \"PreferredNIC\": {\r","          \"type\": \"string\"\r","        },\r","        \"Dante\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"PreferredNIC\",\r","        \"Dante\"\r","      ]\r","    };\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra' || HardwareVersion === \"BirdDog X1\" || HardwareVersion === 'BirdDog X1 Ultra') {\r","    var schema = {\r","      \"type\": \"object\",\r","      \"properties\": {\r","        \"Enable\": {\r","          \"type\": \"string\"\r","        },\r","        \"PreferredNIC\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"PreferredNIC\",\r","      ]\r","    };\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"f7789541-2055-4ead-94f5-02c1f9010b7f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/NetworkSetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["NetworkSetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"ffa263b8-6d3b-45bf-8393-c628e9a9dc71","name":"X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/NetworkSetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:08:52 GMT"},{"key":"Content-Length","value":"41"}],"cookie":[],"responseTime":null,"body":"{\n    \"PreferredNIC\": \"Ethernet\",\n    \"Dante\": \"Off\"\n}"}],"_postman_id":"f7789541-2055-4ead-94f5-02c1f9010b7f"},{"name":"NetworkSetup","event":[{"listen":"test","script":{"id":"bbe8a33c-028d-46d9-a039-e3d0266c1f97","exec":["\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"Hardware\")\r","\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","//Tests for all cameras\r","testResorces.shouldBeOneOf(responseJson, \"PreferredNIC\", [\"Ethernet\", \"WiFi\"])\r","\r","//X4 tests\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    testResorces.shouldBeOneOf(responseJson, \"Dante\", [\"On\", \"Off\"])\r","}\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"4c9e58af-b458-4f26-9aed-2b44d62fb289","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra' || HardwareVersion === \"BirdDog MAX\"){\r","    pm.environment.set(\"skipTests\", true)\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    var schema = {\r","      \"type\": \"object\",\r","      \"properties\": {\r","        \"Enable\": {\r","          \"type\": \"string\"\r","        },\r","        \"PreferredNIC\": {\r","          \"type\": \"string\"\r","        },\r","        \"Dante\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"PreferredNIC\",\r","        \"Dante\"\r","      ]\r","    };\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra' || HardwareVersion === \"BirdDog X1\" || HardwareVersion === 'BirdDog X1 Ultra') {\r","    var schema = {\r","      \"type\": \"object\",\r","      \"properties\": {\r","        \"Enable\": {\r","          \"type\": \"string\"\r","        },\r","        \"PreferredNIC\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"PreferredNIC\",\r","      ]\r","    };\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"6584b658-9f1f-4542-adec-757c18b7125d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"PreferredNIC\":\"Ethernet\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/NetworkSetup","description":"<p>Response body header = \"application/json\".</p>\n","urlObject":{"port":"8080","path":["NetworkSetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"cf6c70a3-3955-447d-a806-94d4557ecdb9","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"PreferredNIC\":\"Ethernet\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/NetworkSetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:09:07 GMT"},{"key":"Content-Length","value":"41"}],"cookie":[],"responseTime":null,"body":"{\n    \"PreferredNIC\": \"Ethernet\",\n    \"Dante\": \"Off\"\n}"}],"_postman_id":"6584b658-9f1f-4542-adec-757c18b7125d"}],"id":"b3d74336-498f-4d1a-8d46-6125171b4f2d","description":"<p><strong>GET -</strong> Preferred NIC and Dante information.</p>\n<p><strong>POST -</strong> Set Preferred NIC and Dante information.</p>\n<p><strong>All X Series Cameras (excluding X5 Ultra &amp; MAX):</strong></p>\n<ul>\n<li>\"PreferredNIC\" → \"Ethernet\" or \"WiFi\"</li>\n</ul>\n<p><strong>X4 Ultra:</strong></p>\n<ul>\n<li>\"Dante\" → \"On\", \"Off\"</li>\n</ul>\n","_postman_id":"b3d74336-498f-4d1a-8d46-6125171b4f2d"}],"id":"8616d8cb-7a3f-47af-b9fa-187dfae9c1d5","description":"<p>This folder contains GET and POST requests that pertain to the networking operations of the device.</p>\n","_postman_id":"8616d8cb-7a3f-47af-b9fa-187dfae9c1d5"},{"name":"Encoder Settings","item":[{"name":"Encode Setup","item":[{"name":"encodesetup","event":[{"listen":"test","script":{"id":"ae7b95fd-1f98-421c-95e4-cf5dea43cbbd","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"Hardware\")","","// Start of API tests","// Tests common to all cameras","","const nonEmptyStrings = [\"NDIGroupName\", \"StreamName\", \"VideoFormat\"]","","jsonSchemaVerification.validateJsonSchema(response, schema);","jsonRestResponses.validateStatusCode(response, 200);","jsonRestResponses.validateHeader(response, header);","","for (const key of nonEmptyStrings) {","    testResorces.nonEmptyString(responseJson, key);","}","","testResorces.shouldBeOneOf(responseJson, \"NDIGroup\", [\"NDIGroupEn\", \"NDIGroupDis\"]);","testResorces.shouldBeOneOf(responseJson, \"ScreenSaverMode\", [\"BirdDogSS\", \"BlackSS\", \"CaptureSS\"]);","testResorces.shouldBeOneOf(responseJson, \"StreamToNetwork\", [\"On\", \"Off\"]);","testResorces.shouldBeOneOf(responseJson, \"VideoCompression\", [\"H264\", \"H265\"])","testResorces.shouldBeOneOf(responseJson, \"StreamProtocol\",  [\"UVC\", \"NDI|HX\", \"NDI|HX_UVC\"])","","//X4 Ultra tests","if (HardwareVersion === 'BirdDog X4 Ultra' || HardwareVersion === 'BirdDog X5 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"NDIAudio\", [\"Mute\", \"Unmute\"])","}",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"87b516be-74f9-4189-980a-79ee793e1254","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"VideoCompression\": {\r","      \"type\": \"string\"\r","    },\r","    \"StreamProtocol\": {\r","      \"type\": \"string\"\r","    },\r","    \"NDIGroup\": {\r","      \"type\": \"string\"\r","    },\r","    \"NDIGroupName\": {\r","      \"type\": \"string\"\r","    },\r","    \"ScreenSaverMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"StreamName\": {\r","      \"type\": \"string\"\r","    },\r","    \"StreamToNetwork\": {\r","      \"type\": \"string\"\r","    },\r","    \"VideoFormat\": {\r","      \"type\": \"string\"\r","    },\r","    \"PrivacyMode\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"NDIGroup\",\r","    \"NDIGroupName\",\r","    \"ScreenSaverMode\",\r","    \"StreamName\",\r","    \"StreamToNetwork\",\r","    \"VideoFormat\",\r","    \"VideoCompression\",\r","    \"StreamProtocol\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersion === \"BirdDog X4 Ultra\" || HardwareVersion === 'BirdDog X5 Ultra'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"VideoCompression\": {\r","      \"type\": \"string\"\r","    },\r","    \"StreamProtocol\": {\r","      \"type\": \"string\"\r","    },\r","    \"NDIGroup\": {\r","      \"type\": \"string\"\r","    },\r","    \"NDIGroupName\": {\r","      \"type\": \"string\"\r","    },\r","    \"ScreenSaverMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"StreamName\": {\r","      \"type\": \"string\"\r","    },\r","    \"StreamToNetwork\": {\r","      \"type\": \"string\"\r","    },\r","    \"VideoFormat\": {\r","      \"type\": \"string\"\r","    },\r","    \"NDIAudio\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"NDIGroup\",\r","    \"NDIGroupName\",\r","    \"ScreenSaverMode\",\r","    \"StreamName\",\r","    \"StreamToNetwork\",\r","    \"VideoFormat\",\r","    \"VideoCompression\",\r","    \"StreamProtocol\",\r","    \"NDIAudio\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"712be03a-b893-4593-b62d-9b825d2641b4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"{{BASE-URL}}:8080/encodesetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["encodesetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"ac1c714c-c07a-45f3-bc42-628613839cb7","name":"X! Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"{{BASE-URL}}:8080/encodesetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Mon, 26 May 2025 13:02:51 GMT"},{"key":"Content-Length","value":"207"}],"cookie":[],"responseTime":null,"body":"{\n    \"VideoFormat\": \"1080p59.94\",\n    \"VideoCompression\": \"H265\",\n    \"StreamProtocol\": \"NDI|HX_UVC\",\n    \"StreamName\": \"CAM\",\n    \"NDIGroupName\": \"BirdDog\",\n    \"StreamToNetwork\": \"On\",\n    \"ScreenSaverMode\": \"CaptureSS\",\n    \"NDIGroup\": \"NDIGroupDis\"\n}"}],"_postman_id":"712be03a-b893-4593-b62d-9b825d2641b4"},{"name":"encodesetup","event":[{"listen":"prerequest","script":{"id":"6804cc40-9310-4f85-a425-ce744393a29c","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","/// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {\r","    var schema = {\r","        \"type\": \"object\",\r","        \"properties\": {\r","            \"VideoCompression\": {\r","                \"type\": \"string\"\r","            },\r","            \"StreamProtocol\": {\r","                \"type\": \"string\"\r","            },\r","            \"NDIGroup\": {\r","                \"type\": \"string\"\r","            },\r","            \"NDIGroupName\": {\r","                \"type\": \"string\"\r","            },\r","            \"ScreenSaverMode\": {\r","                \"type\": \"string\"\r","            },\r","            \"StreamName\": {\r","                \"type\": \"string\"\r","            },\r","            \"StreamToNetwork\": {\r","                \"type\": \"string\"\r","            },\r","            \"VideoFormat\": {\r","                \"type\": \"string\"\r","            },\r","            \"PrivacyMode\": {\r","                \"type\": \"string\"\r","            }\r","        },\r","        \"required\": [\r","            \"NDIGroup\",\r","            \"NDIGroupName\",\r","            \"ScreenSaverMode\",\r","            \"StreamName\",\r","            \"StreamToNetwork\",\r","            \"VideoFormat\",\r","            \"VideoCompression\",\r","            \"StreamProtocol\"\r","        ]\r","    }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if (HardwareVersion === \"BirdDog X4 Ultra\" || HardwareVersion === 'BirdDog X1 Ultra') {\r","    var schema = {\r","        \"type\": \"object\",\r","        \"properties\": {\r","            \"VideoCompression\": {\r","                \"type\": \"string\"\r","            },\r","            \"StreamProtocol\": {\r","                \"type\": \"string\"\r","            },\r","            \"NDIGroup\": {\r","                \"type\": \"string\"\r","            },\r","            \"NDIGroupName\": {\r","                \"type\": \"string\"\r","            },\r","            \"ScreenSaverMode\": {\r","                \"type\": \"string\"\r","            },\r","            \"StreamName\": {\r","                \"type\": \"string\"\r","            },\r","            \"StreamToNetwork\": {\r","                \"type\": \"string\"\r","            },\r","            \"VideoFormat\": {\r","                \"type\": \"string\"\r","            },\r","            \"NDIAudio\": {\r","                \"type\": \"string\"\r","            }\r","        },\r","        \"required\": [\r","            \"NDIGroup\",\r","            \"NDIGroupName\",\r","            \"ScreenSaverMode\",\r","            \"StreamName\",\r","            \"StreamToNetwork\",\r","            \"VideoFormat\",\r","            \"VideoCompression\",\r","            \"StreamProtocol\",\r","            \"NDIAudio\"\r","        ]\r","    }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"id":"4cdae79d-f5dc-4fea-88f3-0b664d5c0f43","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"Hardware\")","","// Start of API tests","// Tests common to all cameras","","const nonEmptyStrings = [\"NDIGroupName\", \"StreamName\", \"VideoFormat\"]","","jsonSchemaVerification.validateJsonSchema(response, schema);","jsonRestResponses.validateStatusCode(response, 200);","jsonRestResponses.validateHeader(response, header);","","for (const key of nonEmptyStrings) {","    testResorces.nonEmptyString(responseJson, key);","}","","testResorces.shouldBeOneOf(responseJson, \"NDIGroup\", [\"NDIGroupEn\", \"NDIGroupDis\"]);","testResorces.shouldBeOneOf(responseJson, \"ScreenSaverMode\", [\"BirdDogSS\", \"BlackSS\", \"CaptureSS\"]);","testResorces.shouldBeOneOf(responseJson, \"StreamToNetwork\", [\"On\", \"Off\"]);","testResorces.shouldBeOneOf(responseJson, \"VideoCompression\", [\"H264\", \"H265\"])","testResorces.shouldBeOneOf(responseJson, \"StreamProtocol\",  [\"UVC\", \"NDI|HX\", \"NDI|HX_UVC\"])","","//X4 Ultra tests","if (HardwareVersion === 'BirdDog X4 Ultra' || HardwareVersion === 'BirdDog X1 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"NDIAudio\", [\"Mute\", \"Unmute\"])","}",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}}],"id":"5b9211db-df48-46a7-bce6-e85a72ced415","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"VideoFormat\": \"1080p60\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/encodesetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["encodesetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"243bfed9-1ba0-4bfa-ab52-a0bf47349b37","name":"X1 Ultra","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\r\n    \"TallyMode\": \"TallyOff\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{BASE-URL}}:8080/encodesetup?ScreenSaverMode=BirdDogSS","host":["{{BASE-URL}}"],"port":"8080","path":["encodesetup"],"query":[{"key":"ScreenSaverMode","value":"BirdDogSS"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:09:40 GMT"},{"key":"Content-Length","value":"255"}],"cookie":[],"responseTime":null,"body":"{\n    \"VideoFormat\": \"2160p29.97\",\n    \"VideoCompression\": \"H265\",\n    \"StreamProtocol\": \"NDI|HX_UVC\",\n    \"StreamName\": \"CAM\",\n    \"NDIGroupName\": \"BirdDog\",\n    \"StreamToNetwork\": \"On\",\n    \"ScreenSaverMode\": \"CaptureSS\",\n    \"NDIGroup\": \"NDIGroupDis\"\n}"}],"_postman_id":"5b9211db-df48-46a7-bce6-e85a72ced415"}],"id":"bc65a637-e594-45a3-a826-377b3566d91e","description":"<p>GET - Retrieve Encode Setup Settings.</p>\n<p>POST- Set Encode Setup Settings.</p>\n<p>header = \"application/json\"</p>\n<p>Response contains:</p>\n<p><strong>X1, X1 Ultra, X4 Ultra &amp; X5 Ultra:</strong></p>\n<ul>\n<li><p>\"NDIGroup\" → \"NDIGroupEn\", \"NDIGroupDis\"</p>\n</li>\n<li><p>\"NDIGroupName\" → User inputed string</p>\n</li>\n<li><p>\"ScreenSaverMode\" → \"BirdDogSS\", \"BlackSS\"</p>\n</li>\n<li><p>\"StreamName\" → User inputed string (default = CAM)</p>\n</li>\n<li><p>\"StreamToNetwork\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"VideoFormat\" → GET returns current format, POST allows changing to any supported resolution.</p>\n</li>\n<li><p>\"VideoCompression\" → \"H265\" or \"H264\"</p>\n</li>\n<li><p>\"StreamProtocol\" → \"NDI|HX\", \"UVC\", \"NDI|HX_UVC\"</p>\n</li>\n</ul>\n<p><strong>X4 Ultra &amp; X5 Ultra:</strong></p>\n<ul>\n<li>\"NDIAudio\" → \"Unmute\", \"Mute\"</li>\n</ul>\n","_postman_id":"bc65a637-e594-45a3-a826-377b3566d91e"},{"name":"Sil2 Codec Information.","item":[{"name":"sil2codec","event":[{"listen":"test","script":{"id":"8f61a8e2-87ba-4670-88bc-1d7af9b00a00","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"BitrateControl\": {\r","      \"type\": \"string\"\r","    },\r","    \"ModeSel\": {\r","      \"type\": \"string\"\r","    },\r","    \"GOPSize\": {\r","      \"type\": \"string\"\r","    },\r","    \"Bitrate\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"BitrateControl\",\r","    \"ModeSel\",\r","    \"GOPSize\",\r","    \"Bitrate\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"BitrateControl\", [\"cbr\", \"vbr\"])\r","\r","testResorces.isNumericString(responseJson, \"GOPSize\")\r","\r","testResorces.isNumericString(responseJson, \"Bitrate\")\r","\r","//ModeSel tests per device type\r","if (HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    testResorces.shouldBeOneOf(responseJson, \"ModeSel\", [\r","        \"high\", \r","        \"med\", \r","        \"low\", \r","        \"custom\",\r","        \"NDI|HX3_H264_1080p30\",\r","        \"NDI|HX3_H264_1080p25\",\r","        \"NDI|HX3_H265_1080p30\",\r","        \"NDI|HX3_H265_1080p25\",\r","        \"NDI|HX3_H264_2160p30\",\r","        \"NDI|HX3_H264_2160p25\",\r","        \"NDI|HX3_H265_2160p30\",\r","        \"NDI|HX3_H265_2160p25\"\r","        ])\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    testResorces.shouldBeOneOf(responseJson, \"ModeSel\", [\r","        \"high\", \r","        \"med\", \r","        \"low\", \r","        \"custom\",\r","        \"NDI|HX3_H264_1080p60\",\r","        \"NDI|HX3_H264_1080p50\",\r","        \"NDI|HX3_H265_1080p60\",\r","        \"NDI|HX3_H265_1080p50\",\r","        \"NDI|HX3_H264_2160p60\",\r","        \"NDI|HX3_H264_2160p50\",\r","        \"NDI|HX3_H265_2160p60\",\r","        \"NDI|HX3_H265_2160p50\"\r","        ])\r","}\r","\r","if (HardwareVersion === 'BirdDog X1'){\r","    testResorces.shouldBeOneOf(responseJson, \"ModeSel\", [\r","        \"high\", \r","        \"med\", \r","        \"low\", \r","        \"custom\",\r","        \"NDI|HX3_H264_1080p30\",\r","        \"NDI|HX3_H264_1080p25\",\r","        \"NDI|HX3_H265_1080p30\",\r","        \"NDI|HX3_H265_1080p25\"\r","        ])\r","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"f4dda6e4-944f-4ec1-9823-f3fadef73bd2","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");"],"type":"text/javascript","packages":{}}}],"id":"da3bd408-fa15-4d5a-bdd0-1a08ad943bc0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/sil2codec","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["sil2codec"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"db59aaa4-725b-484f-b0f0-fdc0fcf9f099","name":"All Cameras","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/sil2codec"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 09:53:07 GMT","enabled":true},{"key":"Content-Length","value":"72","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"BitrateControl\": \"cbr\",\n    \"ModeSel\": \"high\",\n    \"GOPSize\": \"60\",\n    \"Bitrate\": \"31\"\n}"}],"_postman_id":"da3bd408-fa15-4d5a-bdd0-1a08ad943bc0"},{"name":"sil2codec","event":[{"listen":"test","script":{"id":"148de756-10e1-407f-be97-514f8a140e6a","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"BitrateControl\": {\r","      \"type\": \"string\"\r","    },\r","    \"ModeSel\": {\r","      \"type\": \"string\"\r","    },\r","    \"GOPSize\": {\r","      \"type\": \"string\"\r","    },\r","    \"Bitrate\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"BitrateControl\",\r","    \"ModeSel\",\r","    \"GOPSize\",\r","    \"Bitrate\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"BitrateControl\", [\"cbr\", \"vbr\"])\r","\r","testResorces.isNumericString(responseJson, \"GOPSize\")\r","\r","testResorces.isNumericString(responseJson, \"Bitrate\")\r","\r","//ModeSel tests per device type\r","if (HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    testResorces.shouldBeOneOf(responseJson, \"ModeSel\", [\r","        \"high\", \r","        \"med\", \r","        \"low\", \r","        \"custom\",\r","        \"NDI|HX3_H264_1080p30\",\r","        \"NDI|HX3_H264_1080p25\",\r","        \"NDI|HX3_H265_1080p30\",\r","        \"NDI|HX3_H265_1080p25\",\r","        \"NDI|HX3_H264_2160p30\",\r","        \"NDI|HX3_H264_2160p25\",\r","        \"NDI|HX3_H265_2160p30\",\r","        \"NDI|HX3_H265_2160p25\"\r","        ])\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    testResorces.shouldBeOneOf(responseJson, \"ModeSel\", [\r","        \"high\", \r","        \"med\", \r","        \"low\", \r","        \"custom\",\r","        \"NDI|HX3_H264_1080p60\",\r","        \"NDI|HX3_H264_1080p50\",\r","        \"NDI|HX3_H265_1080p60\",\r","        \"NDI|HX3_H265_1080p50\",\r","        \"NDI|HX3_H264_2160p60\",\r","        \"NDI|HX3_H264_2160p50\",\r","        \"NDI|HX3_H265_2160p60\",\r","        \"NDI|HX3_H265_2160p50\"\r","        ])\r","}\r","\r","if (HardwareVersion === 'BirdDog X1'){\r","    testResorces.shouldBeOneOf(responseJson, \"ModeSel\", [\r","        \"high\", \r","        \"med\", \r","        \"low\", \r","        \"custom\",\r","        \"NDI|HX3_H264_1080p30\",\r","        \"NDI|HX3_H264_1080p25\",\r","        \"NDI|HX3_H265_1080p30\",\r","        \"NDI|HX3_H265_1080p25\"\r","        ])\r","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"a5268d94-7167-4a20-9e18-9821f21f264b","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");"],"type":"text/javascript","packages":{}}}],"id":"1177e7fb-5cac-4178-92f7-dd96609e66e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"BitrateControl\": \"cbr\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/sil2codec","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["sil2codec"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"fbb2d138-fa86-4068-82af-25d4f6e3a73d","name":"All Cameras","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"GOPSize\": \"60\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/sil2codec"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 09:54:41 GMT","enabled":true},{"key":"Content-Length","value":"72","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"BitrateControl\": \"cbr\",\n    \"ModeSel\": \"high\",\n    \"GOPSize\": \"60\",\n    \"Bitrate\": \"31\"\n}"}],"_postman_id":"1177e7fb-5cac-4178-92f7-dd96609e66e4"}],"id":"759e6c99-e428-46c8-bd17-84a4dbf3b8f4","description":"<p><strong>*HX3 Modes not yet implemented for X5</strong>*</p>\n<p>GET - Retrieve Device Silicon 2 Encoder Settings.</p>\n<p>POST - Set Device Silicon 2 Encoder Settings.</p>\n<p>header = \"application/json\"</p>\n<p>Response contains:</p>\n<p><strong>All Cameras:</strong></p>\n<ul>\n<li><p>\"BitrateControl\" → \"cbr\" or \"vbr\" (Constant or Variable)</p>\n</li>\n<li><p>\"ModeSel\":</p>\n<ul>\n<li><p><strong>All Cameras:</strong></p>\n<ul>\n<li>\"high\", \"low\", \"med\" or \"custom\"</li>\n</ul>\n</li>\n<li><p><strong>X1 Ultra, MAX, X4 Ultra &amp; X5 Ultra:</strong></p>\n<ul>\n<li><p>\"h264_2160p30\"</p>\n</li>\n<li><p>\"h264_2160p25\"</p>\n</li>\n<li><p>\"h264_1080p30\"</p>\n</li>\n<li><p>\"h264_1080p25\"</p>\n</li>\n<li><p>=================</p>\n</li>\n<li><p>\"h265_2160p30\"</p>\n</li>\n<li><p>\"h265_2160p25\"</p>\n</li>\n<li><p>\"h265_1080p30\"</p>\n</li>\n<li><p>\"h265_1080p25\"</p>\n</li>\n</ul>\n</li>\n<li><p><strong>X4 Ultra &amp; X5 Ultra</strong> <em>(including above presets)</em><strong>:</strong></p>\n<ul>\n<li><p>\"h264_2160p60\"</p>\n</li>\n<li><p>\"h264_2160p50\"</p>\n</li>\n<li><p>\"h264_1080p60\"</p>\n</li>\n<li><p>\"h264_1080p50\"</p>\n</li>\n<li><p>=================</p>\n</li>\n<li><p>\"h265_2160p60\"</p>\n</li>\n<li><p>\"h265_2160p50\"</p>\n</li>\n<li><p>\"h265_1080p60\"</p>\n</li>\n<li><p>\"h265_1080p50\"</p>\n</li>\n</ul>\n</li>\n<li><p><strong>X4 Ultra</strong> <strong>&amp; X5 Ultra</strong> <em>(including above presets)</em><strong>:</strong></p>\n<ul>\n<li><p>\"h264_2160p59.94\"</p>\n</li>\n<li><p>\"h264_1080p59.94\"</p>\n</li>\n<li><p>=================</p>\n</li>\n<li><p>\"h265_2160p59.94\"</p>\n</li>\n<li><p>\"h265_1080p59.94\"</p>\n</li>\n</ul>\n</li>\n<li><p><strong>For X1:</strong></p>\n<ul>\n<li><p>\"h264_1080p60\"</p>\n</li>\n<li><p>\"h264_1080p50\"</p>\n</li>\n<li><p>\"h264_1080p30\"</p>\n</li>\n<li><p>\"h264_1080p25\"</p>\n</li>\n<li><p>=================</p>\n</li>\n<li><p>\"h265_1080p60\"</p>\n</li>\n<li><p>\"h265_1080p50\"</p>\n</li>\n<li><p>\"h265_1080p30\"</p>\n</li>\n<li><p>\"h265_1080p25\"</p>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><p>\"GOPSize\" → Range 1 to 60</p>\n</li>\n<li><p>\"Bitrate\" → Range 1 to 80</p>\n</li>\n</ul>\n","_postman_id":"759e6c99-e428-46c8-bd17-84a4dbf3b8f4"},{"name":"Secondary Encoder Protocol","item":[{"name":"secondary_protocol","event":[{"listen":"test","script":{"id":"698943fe-a307-41c5-85c6-64c1c48dc9fa","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"HardwareVersion\")","","","jsonSchemaVerification.validateJsonSchema(response, schema)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","testResorces.shouldBeOneOf(responseJson, \"protocol\",[\"disable\", \"RTMP\", \"RTSP\", \"SRT\", \"all-enabled\"])","","// pm.test('RTMP.authentication key is one of disable or enable', function () {","//     const responseData = pm.response.json();","//     pm.expect(responseData.RTMP.authentication).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","//     pm.expect(responseData.RTMP.authentication).to.be.oneOf([","//         'disable',","//         'enable'","//     ]);","// })","","if (HardwareVersion !== \"BirdDog X4 Ultra\") {","","    pm.test('RTMP.connection_url key is a valid URL', function () {","        const responseData = pm.response.json();","        pm.expect(responseData.RTMP.connection_url).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","        pm.expect(responseData.RTMP.connection_url).to.match(/^rtmp:\\/\\/(?:[0-9]{1,3}\\.){3}[0-9]{1,3}:[0-9]{1,5}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)$/);","    })","","    pm.test('RTMP has server_selection key is one of local or remote', function () {","        const responseData = pm.response.json();","        pm.expect(responseData.RTMP.server_selection).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","        pm.expect(responseData.RTMP.server_selection).to.be.oneOf([","            'remote',","            'local'","        ]);","    })","","    pm.test('RTMP has server_url key is a valid URL', function () {","        const responseData = pm.response.json();","        pm.expect(responseData.RTMP.server_url).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","        pm.expect(responseData.RTMP.server_url).to.match(/^rtmp:\\/\\/(?:[0-9]{1,3}\\.){3}[0-9]{1,3}:[0-9]{1,5}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)$/);","    })","};","","// pm.test('RTMP has stream_key key with correct data', function () {","//     const responseData = pm.response.json();","//     pm.expect(responseData.RTMP.stream_key).to.be.a('string').and.to.have.lengthOf.at.least(0, ' can be empty');","// })","","// pm.test('RTSP.authentication key is one of disable or enable', function () {","//     const responseData = pm.response.json();","//     pm.expect(responseData.RTSP.authentication).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","//     pm.expect(responseData.RTSP.authentication).to.be.oneOf([","//         'disable',","//         'enable'","//     ]);","// })","","pm.test('RTSP.connection_url key is a valid URL', function () {","    const responseData = pm.response.json();","    pm.expect(responseData.RTSP.connection_url).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","    pm.expect(responseData.RTSP.connection_url).to.match(/^rtsp:\\/\\/(?:[0-9]{1,3}\\.){3}[0-9]{1,3}:[0-9]{1,5}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)$/);","})","","// pm.test('RTSP has password key with correct data', function () {","//     const responseData = pm.response.json();","//     pm.expect(responseData.RTSP.password).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","// })","","pm.test('RTSP has port key with correct data', function () {","    const responseData = pm.response.json();","    pm.expect(responseData.RTSP.port).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","})","","// pm.test('RTSP has stream_name key with correct data', function () {","//     const responseData = pm.response.json();","//     pm.expect(responseData.RTSP.stream_name).to.be.a('string').and.to.have.lengthOf.at.least(0, ' can be empty');","// })","","// pm.test('RTSP has user_name key with correct data', function () {","//     const responseData = pm.response.json();","//     pm.expect(responseData.RTSP.user_name).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","// })","","pm.test('SRT has connection_type key with correct data', function () {","    const responseData = pm.response.json();","    pm.expect(responseData.SRT.connection_type).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","    pm.expect(responseData.SRT.connection_type).to.be.oneOf([","        'listener',","        'caller',","        'rendezvous'","    ]);","})","","pm.test('SRT.connection_url key is a valid URL', function () {","    const responseData = pm.response.json();","    pm.expect(responseData.SRT.connection_url).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","    pm.expect(responseData.SRT.connection_url).to.match(/^srt:\\/\\/(?:[0-9]{1,3}\\.){3}[0-9]{1,3}:[0-9]{1,5}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)$/);","})","","// pm.test('SRT.authentication key is one of disable or enable', function () {","//     const responseData = pm.response.json();","//     pm.expect(responseData.SRT.encryption).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","//     pm.expect(responseData.SRT.encryption).to.be.oneOf([","//         'disable',","//         'enable'","//     ]);","// })","","// pm.test('SRT has encryption_length key with correct data', function () {","//     const responseData = pm.response.json();","//     pm.expect(responseData.SRT.encryption_length).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","//     pm.expect(responseData.SRT.encryption_length).to.be.oneOf([","//         'AES-128',","//         'AES-192',","//         'AES-256',","//         'none'","//     ]);","// })","","pm.test('SRT has latency_ms key with correct data', function () {","    const responseData = pm.response.json();","    pm.expect(responseData.SRT.latency_ms).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","})","","// pm.test('SRT has passphrase key with correct data', function () {","//     const responseData = pm.response.json();","//     pm.expect(responseData.SRT.passphrase).to.be.a('string').and.to.have.lengthOf.at.least(0, ' this can be empty');","// })","","pm.test('SRT has port key with correct data', function () {","    const responseData = pm.response.json();","    pm.expect(responseData.SRT.port).to.be.a('string').and.to.have.lengthOf.at.least(1, ' should not be empty');","    var portNumber = Number(responseData.SRT.port);","    pm.expect(portNumber).to.be.within(1, 65536);","})",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}},"requests":{}}},{"listen":"prerequest","script":{"id":"6bfba6d8-e25a-46b1-87f3-ce3d15220cec","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    var schema = {\r","    'type': 'object',\r","    'properties': {\r","        'RTSP': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_url': { 'type': 'string' },\r","                'port': { 'type': 'string' },\r","                'stream_name': { 'type': 'string' },\r","            },\r","            'required': [\r","                'connection_url',\r","                'port',\r","                'stream_name'\r","            ]\r","        },\r","        'SRT': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_type': { 'type': 'string' },\r","                'connection_url': { 'type': 'string' },\r","                'latency_ms': { 'type': 'string' },\r","                'port': { 'type': 'string' }\r","            },\r","            'required': [\r","                'connection_type',\r","                'connection_url',\r","                'latency_ms',\r","                'port'\r","            ]\r","        },\r","        'protocol': { 'type': 'string' }\r","    },\r","    'required': [\r","        'RTSP',\r","        'SRT',\r","        'protocol'\r","    ]\r","    };\r","} else {\r","    var schema = {\r","    'type': 'object',\r","    'properties': {\r","        'RTMP': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_url': { 'type': 'string' },\r","                'server_selection': { 'type': 'string' },\r","                'server_url': { 'type': 'string' },\r","            },\r","            'required': [\r","                'connection_url',\r","                'server_selection',\r","                'server_url'\r","            ]\r","        },\r","        'RTSP': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_url': { 'type': 'string' },\r","                'port': { 'type': 'string' },\r","                'stream_name': { 'type': 'string' },\r","            },\r","            'required': [\r","                'connection_url',\r","                'port',\r","                'stream_name'\r","            ]\r","        },\r","        'SRT': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_type': { 'type': 'string' },\r","                'connection_url': { 'type': 'string' },\r","                'latency_ms': { 'type': 'string' },\r","                'port': { 'type': 'string' }\r","            },\r","            'required': [\r","                'connection_type',\r","                'connection_url',\r","                'latency_ms',\r","                'port'\r","            ]\r","        },\r","        'protocol': { 'type': 'string' }\r","    },\r","    'required': [\r","        'RTMP',\r","        'RTSP',\r","        'SRT',\r","        'protocol'\r","    ]\r","};\r","}\r","\r","// Store the desired value in an environment variable\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"505e146a-17cf-4331-9bfe-6820d9b78e2f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/secondary_protocol","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["secondary_protocol"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"030a3157-a21a-41ef-808d-364ed54d3812","name":"All Cameras","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/secondary_protocol"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 14:17:11 GMT","enabled":true},{"key":"Content-Length","value":"587","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"RTMP\": {\n        \"authentication\": \"disable\",\n        \"connection_url\": \"rtmp://192.168.1.100:8899/live/huyalive\",\n        \"server_selection\": \"remote\",\n        \"server_url\": \"rtmp://192.168.1.100:8899/live\",\n        \"stream_key\": \"\"\n    },\n    \"RTSP\": {\n        \"authentication\": \"disable\",\n        \"connection_url\": \"rtsp://192.168.20.46:554/live/av0\",\n        \"password\": \"birddog\",\n        \"port\": \"554\",\n        \"stream_name\": \"live/av0\",\n        \"user_name\": \"admin\"\n    },\n    \"SRT\": {\n        \"connection_type\": \"listener\",\n        \"connection_url\": \"srt://192.168.20.46:9000?mode=caller&latency=120\",\n        \"encryption\": \"disable\",\n        \"encryption_length\": \"AES-128\",\n        \"latency_ms\": \"120\",\n        \"passphrase\": \"\",\n        \"port\": \"9000\"\n    },\n    \"protocol\": \"disable\"\n}"}],"_postman_id":"505e146a-17cf-4331-9bfe-6820d9b78e2f"},{"name":"secondary_protocol","event":[{"listen":"test","script":{"id":"a710ff77-90b3-4bf3-b6ee-e02967802067","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\")\r","\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"protocol\",[\"disable\", \"RTMP\", \"RTSP\", \"SRT\", \"all-enabled\"])"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}},"requests":{}}},{"listen":"prerequest","script":{"id":"431e8945-0180-4a43-8d39-8dd610bf7715","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    var schema = {\r","    'type': 'object',\r","    'properties': {\r","        'RTSP': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_url': { 'type': 'string' },\r","                'port': { 'type': 'string' },\r","                'stream_name': { 'type': 'string' },\r","            },\r","            'required': [\r","                'connection_url',\r","                'port',\r","                'stream_name'\r","            ]\r","        },\r","        'SRT': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_type': { 'type': 'string' },\r","                'connection_url': { 'type': 'string' },\r","                'latency_ms': { 'type': 'string' },\r","                'port': { 'type': 'string' }\r","            },\r","            'required': [\r","                'connection_type',\r","                'connection_url',\r","                'latency_ms',\r","                'port'\r","            ]\r","        },\r","        'protocol': { 'type': 'string' }\r","    },\r","    'required': [\r","        'RTSP',\r","        'SRT',\r","        'protocol'\r","    ]\r","    };\r","} else {\r","    var schema = {\r","    'type': 'object',\r","    'properties': {\r","        'RTMP': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_url': { 'type': 'string' },\r","                'server_selection': { 'type': 'string' },\r","                'server_url': { 'type': 'string' },\r","            },\r","            'required': [\r","                'connection_url',\r","                'server_selection',\r","                'server_url'\r","            ]\r","        },\r","        'RTSP': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_url': { 'type': 'string' },\r","                'port': { 'type': 'string' },\r","                'stream_name': { 'type': 'string' },\r","            },\r","            'required': [\r","                'connection_url',\r","                'port',\r","                'stream_name'\r","            ]\r","        },\r","        'SRT': {\r","            'type': 'object',\r","            'properties': {\r","                'connection_type': { 'type': 'string' },\r","                'connection_url': { 'type': 'string' },\r","                'latency_ms': { 'type': 'string' },\r","                'port': { 'type': 'string' }\r","            },\r","            'required': [\r","                'connection_type',\r","                'connection_url',\r","                'latency_ms',\r","                'port'\r","            ]\r","        },\r","        'protocol': { 'type': 'string' }\r","    },\r","    'required': [\r","        'RTMP',\r","        'RTSP',\r","        'SRT',\r","        'protocol'\r","    ]\r","};\r","}\r","\r","// Store the desired value in an environment variable\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"41e7cb03-4c3f-497d-a0e3-7271c7939e39","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"protocol\": \"disable\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/secondary_protocol","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["secondary_protocol"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"660f4927-9314-46aa-b04d-e1ff978af63b","name":"All Cameras","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"SRT\": {\r\n        \"latency_ms\": \"222\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/secondary_protocol"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 14:17:52 GMT","enabled":true},{"key":"Content-Length","value":"647","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"RTMP\": {\n        \"authentication\": \"disable\",\n        \"connection_url\": \"rtmp://192.168.1.100:8899/live/huyalive\",\n        \"server_selection\": \"remote\",\n        \"server_url\": \"rtmp://192.168.1.100:8899/live\",\n        \"stream_key\": \"\"\n    },\n    \"RTSP\": {\n        \"authentication\": \"disable\",\n        \"connection_url\": \"rtsp://192.168.20.46:554/live/av0\",\n        \"password\": \"birddog\",\n        \"port\": \"554\",\n        \"stream_name\": \"live/av0\",\n        \"user_name\": \"admin\"\n    },\n    \"SRT\": {\n        \"connection_type\": \"%!s(<nil>)\",\n        \"connection_url\": \"srt://192.168.0.84:7900?mode=caller&latency=120\",\n        \"encryption\": \"disable\",\n        \"encryption_length\": \"AES-128\",\n        \"latency_ms\": \"222\",\n        \"passphrase\": \"%!s(<nil>)\",\n        \"port\": \"%!s(<nil>)\"\n    },\n    \"protocol\": \"disable\"\n}"}],"_postman_id":"41e7cb03-4c3f-497d-a0e3-7271c7939e39"}],"id":"a88b7573-228b-4ba9-9980-ea14a99a7a38","description":"<p>GET - Retrieve the Secondary Protocol Settings.</p>\n<p>POST - ONLY used for enabling or disabling the available secondary protocols, all other options will need to be set through the Web UI.</p>\n<p>header = \"application/json\"</p>\n<p>Response contains:</p>\n<p><strong>All Cameras:</strong> (X4 doesn't support RTMP)</p>\n<p><b>GET:</b></p>\n<ul>\n<li>\"protocol\" → \"disable\" \"SRT\" \"RTSP\" or \"RTMP\"</li>\n</ul>\n<hr />\n<ul>\n<li><p>\"SRT\"</p>\n<ul>\n<li><p>\"connection_type\" → \"listener\" or \"caller\"</p>\n</li>\n<li><p>\"port\" → values between 1 and 65535</p>\n</li>\n<li><p>\"latency_ms\" → values between 80 and 8000</p>\n</li>\n<li><p>\"connection_url\" → returns URL to connect to in listener mode</p>\n</li>\n</ul>\n</li>\n</ul>\n<hr />\n<ul>\n<li><p>\"RTSP\"</p>\n<ul>\n<li><p>\"stream_name\" → alphanumeric</p>\n</li>\n<li><p>\"port\" → values between 1 and 65535</p>\n</li>\n<li><p>\"connection_url\" → URL for user connections</p>\n</li>\n</ul>\n</li>\n</ul>\n<hr />\n<ul>\n<li><p>\"RTMP\"</p>\n<ul>\n<li><p>\"server_selection\" → \"local\" or \"remote\"</p>\n</li>\n<li><p>\"server_url\" → for REMOTE server selection</p>\n</li>\n<li><p>\"connection_url\" → for LOCAL connections</p>\n</li>\n</ul>\n</li>\n</ul>\n<p><b>POST:</b></p>\n<ul>\n<li>\"protocol\" → \"disable\" \"SRT\" \"RTSP\" \"RTMP\" or \"all-enabled\"</li>\n</ul>\n","_postman_id":"a88b7573-228b-4ba9-9980-ea14a99a7a38"},{"name":"Analog Audio Setup","item":[{"name":"analogaudiosetup","event":[{"listen":"test","script":{"id":"40d576d9-a347-4ac3-b4f8-5218df1303e8","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"Hardware\")\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema);\r","jsonRestResponses.validateStatusCode(response, 200);\r","jsonRestResponses.validateHeader(response, header);\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra') {\r","    testResorces.shouldBeOneOf(responseJson, \"AnalogAudioInGain\", [\"-36 dB\", \"-30 dB\", \"-24 dB\", \"-12 dB\", \"-6 dB\", \"0 dB\", \"3 dB\", \"6 dB\", \"9 dB\", \"12 dB\"])\r","    testResorces.shouldBeOneOf(responseJson, \"AnalogAudiooutputselect\", [\"Mic\", \"Line\"])\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra') {\r","    testResorces.betweenTwoNumbers(responseJson, \"AnalogAudioInGain\", 0, 80)\r","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"f411d7f1-b733-404f-99e4-e598bf25f8b8","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    pm.environment.set(\"skipTests\", true)\r","}\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra') {\r","    var schema = {\r","        \"type\": \"object\",\r","        \"properties\": {\r","          \"AnalogAudioInGain\": {\r","            \"type\": \"string\"\r","          },\r","          \"AnalogAudiooutputselect\": {\r","            \"type\": \"string\"\r","          }\r","        },\r","        \"required\": [\r","          \"AnalogAudioInGain\",\r","          \"AnalogAudiooutputselect\"\r","        ]\r","    }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra') {\r","    var schema = {\r","        \"type\": \"object\",\r","        \"properties\": {\r","          \"AnalogAudioInGain\": {\r","            \"type\": \"string\"\r","          }\r","        },\r","        \"required\": [\r","          \"AnalogAudioInGain\"\r","        ]\r","    }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"27f33619-62d9-4d8c-a8ac-ab7b2041a01f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/analogaudiosetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["analogaudiosetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"27f33619-62d9-4d8c-a8ac-ab7b2041a01f"},{"name":"analogaudiosetup","event":[{"listen":"test","script":{"id":"40d576d9-a347-4ac3-b4f8-5218df1303e8","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"Hardware\")\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema);\r","jsonRestResponses.validateStatusCode(response, 200);\r","jsonRestResponses.validateHeader(response, header);\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra') {\r","    testResorces.shouldBeOneOf(responseJson, \"AnalogAudioInGain\", [\"-36 dB\", \"-30 dB\", \"-24 dB\", \"-12 dB\", \"-6 dB\", \"0 dB\", \"3 dB\", \"6 dB\", \"9 dB\", \"12 dB\"])\r","    testResorces.shouldBeOneOf(responseJson, \"AnalogAudiooutputselect\", [\"Mic\", \"Line\"])\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra') {\r","    testResorces.betweenTwoNumbers(responseJson, \"AnalogAudioInGain\", 0, 80)\r","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"45794f26-f96e-444d-9f53-ebb814ce82d4","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    pm.environment.set(\"skipTests\", true)\r","}\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra') {\r","    var schema = {\r","        \"type\": \"object\",\r","        \"properties\": {\r","          \"AnalogAudioInGain\": {\r","            \"type\": \"string\"\r","          },\r","          \"AnalogAudiooutputselect\": {\r","            \"type\": \"string\"\r","          }\r","        },\r","        \"required\": [\r","          \"AnalogAudioInGain\",\r","          \"AnalogAudiooutputselect\"\r","        ]\r","    }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra') {\r","    var schema = {\r","        \"type\": \"object\",\r","        \"properties\": {\r","          \"AnalogAudioInGain\": {\r","            \"type\": \"string\"\r","          }\r","        },\r","        \"required\": [\r","          \"AnalogAudioInGain\"\r","        ]\r","    }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"1314ac8a-f1b2-4bf0-8d9f-461f4399aeaf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"AnalogAudioInGain\": \"55\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/analogaudiosetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["analogaudiosetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"1314ac8a-f1b2-4bf0-8d9f-461f4399aeaf"}],"id":"2c8358e5-b7e8-4395-a0d1-2dd58ed5c452","description":"<p>View or set the devices encoder audio settings</p>\n<p>header = \"application/json\"</p>\n<p><strong>X4 Ultra:</strong></p>\n<ul>\n<li>\"AnalogAudioInGain\" → Range 1 to 80</li>\n</ul>\n<p><strong>X5 Ultra:</strong></p>\n<ul>\n<li><p>\"AnalogAudioInGain\" → \"-36 dB\", \"-30 dB\", \"-24 dB\", \"-12 dB\", \"-6 dB\", \"0 dB\", \"3 dB\", \"6 dB\", \"9 dB\", or \"12 dB\"</p>\n</li>\n<li><p>\"AnalogAudiooutputselect\" → \"Mic\" or \"Line\"</p>\n</li>\n</ul>\n","_postman_id":"2c8358e5-b7e8-4395-a0d1-2dd58ed5c452"},{"name":"Encoder Transport","item":[{"name":"encodeTransport","event":[{"listen":"test","script":{"id":"96154ee7-f2f9-4709-b226-346db0fb608e","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Txmcttl\": {\r","      \"type\": \"string\"\r","    },\r","    \"Txnetmask\": {\r","      \"type\": \"string\"\r","    },\r","    \"Txnetprefix\": {\r","      \"type\": \"string\"\r","    },\r","    \"Txpm\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Txmcttl\",\r","    \"Txnetmask\",\r","    \"Txnetprefix\",\r","    \"Txpm\"\r","  ]\r","};\r","\r","const ipAddresses = [\"Txnetmask\", \"Txnetprefix\"]\r","\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","for (const key of ipAddresses) {\r","    testResorces.formattedIpAddress(responseJson, key)\r","}\r","\r","testResorces.shouldBeOneOf(responseJson, \"Txpm\", [\"TCP\", \"UDP\", \"RUDP\", \"Multicast\"])\r","\r","testResorces.isNumericString(responseJson, \"Txmcttl\")\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"4c4f867b-c1bd-49be-a90f-c16b8a8630a1","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"17129a8e-d518-41c3-ba73-66c6935baae6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/encodeTransport","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["encodeTransport"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"396059e3-f597-411a-a6bd-b58ba6ed6a93","name":"X1 & X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/encodeTransport"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 15:08:15 GMT","enabled":true},{"key":"Content-Length","value":"82","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"Txmcttl\": \"1\",\n    \"Txnetmask\": \"255.255.0.0\",\n    \"Txnetprefix\": \"239.255.0.0\",\n    \"Txpm\": \"TCP\"\n}"}],"_postman_id":"17129a8e-d518-41c3-ba73-66c6935baae6"},{"name":"encodeTransport","event":[{"listen":"test","script":{"id":"96154ee7-f2f9-4709-b226-346db0fb608e","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Txmcttl\": {\r","      \"type\": \"string\"\r","    },\r","    \"Txnetmask\": {\r","      \"type\": \"string\"\r","    },\r","    \"Txnetprefix\": {\r","      \"type\": \"string\"\r","    },\r","    \"Txpm\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Txmcttl\",\r","    \"Txnetmask\",\r","    \"Txnetprefix\",\r","    \"Txpm\"\r","  ]\r","};\r","\r","const ipAddresses = [\"Txnetmask\", \"Txnetprefix\"]\r","\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","for (const key of ipAddresses) {\r","    testResorces.formattedIpAddress(responseJson, key)\r","}\r","\r","testResorces.shouldBeOneOf(responseJson, \"Txpm\", [\"TCP\", \"UDP\", \"RUDP\", \"Multicast\"])\r","testResorces.isNumericString(responseJson, \"Txmcttl\")\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"aedf674f-ee7f-4d1d-9699-3193446f70d2","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"f42af96f-b98d-4ea2-9614-92d004b8a078","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"Txpm\": \"RUDP\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/encodeTransport","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["encodeTransport"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"d70be7c9-d49c-4a99-b326-ec0d1777d5ac","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"Txpm\": \"RUDP\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/encodeTransport"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:15:36 GMT"},{"key":"Content-Length","value":"97"}],"cookie":[],"responseTime":null,"body":"{\n    \"Txmcttl\": \"1\",\n    \"Txnetmask\": \"255.255.0.0\",\n    \"Txnetprefix\": \"239.255.0.0\",\n    \"Txpm\": \"RUDP\",\n    \"rxpm\": \"RUDP\"\n}"}],"_postman_id":"f42af96f-b98d-4ea2-9614-92d004b8a078"}],"id":"4ec17056-5b78-42ee-a252-ff01467d5ec1","description":"<p>Set or retrieve the current NDI network settings.</p>\n<p>header = \"application/json\"</p>\n<p>Response includes:</p>\n<p><strong>All X Series Cameras:</strong></p>\n<ul>\n<li><p>\"Txmcttl\" (multicast time-to-live) → numbers in the range 0 to 255</p>\n</li>\n<li><p>\"Txnetmask\" (multicast subnet) → e.g. \"255.255.0.0\"</p>\n</li>\n<li><p>\"Txnetprefix\" (multicast address) → e.g. \"239.255.0.0\"</p>\n</li>\n<li><p>\"Txpm\" (Transmit preferred method) → \"TCP\", \"UDP\", \"RUDP\" or \"Multicast\"</p>\n</li>\n</ul>\n","_postman_id":"4ec17056-5b78-42ee-a252-ff01467d5ec1"},{"name":"Genlock & Failover Sources","item":[{"name":"Genlock_Failover_Source","event":[{"listen":"test","script":{"id":"1d1b1966-8d9d-49b3-8a60-fe1e2c6815b9","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"GenlockSource\": {\r","      \"type\": \"string\"\r","    },\r","    \"FailoverSource\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"GenlockSource\",\r","    \"FailoverSource\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.nonEmptyString(responseJson, \"GenlockSource\")\r","testResorces.nonEmptyString(responseJson, \"FailoverSource\")"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"b76c4280-b34a-42bc-a099-54c5c34b7ee0","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"a58cca01-6c69-4494-8fe4-d319b1b53c18","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/Genlock_Failover_Source","urlObject":{"port":"8080","path":["Genlock_Failover_Source"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"a58cca01-6c69-4494-8fe4-d319b1b53c18"},{"name":"Genlock_Failover_Source","event":[{"listen":"test","script":{"id":"1d1b1966-8d9d-49b3-8a60-fe1e2c6815b9","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"GenlockSource\": {\r","      \"type\": \"string\"\r","    },\r","    \"FailoverSource\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"GenlockSource\",\r","    \"FailoverSource\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.nonEmptyString(responseJson, \"GenlockSource\")\r","testResorces.nonEmptyString(responseJson, \"FailoverSource\")"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"1446be0f-cbe8-4d93-af50-9c3cc53c8996","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"4d50abdc-da02-4d45-9b24-271fb80f8a08","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{BASE-URL}}:8080/Genlock_Failover_Source","urlObject":{"port":"8080","path":["Genlock_Failover_Source"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"4d50abdc-da02-4d45-9b24-271fb80f8a08"}],"id":"fcfa7d85-486d-4705-bcb8-b16d36ffbf72","description":"<p>GET and POST information about which NDI source the device will use as its NDI Genlock source.</p>\n<p>header = \"application/json\"</p>\n<p><strong>All Cameras:</strong></p>\n<ul>\n<li><p>\"GenlockSource\" → NDI source, and stream, name e.g. \"BIRDDOG-046CE (CAM)\".</p>\n</li>\n<li><p>\"FailoverSource\" → NDI source, and stream, name e.g. \"BIRDDOG-046CE (CAM)\".</p>\n</li>\n</ul>\n<p>For both API keys, the return when no source is selected will be \"None\"</p>\n","_postman_id":"fcfa7d85-486d-4705-bcb8-b16d36ffbf72"}],"id":"81aa02c3-d35a-493d-ae1b-319fb79d2db1","description":"<p>This folder contains GET and POST requests that pertain to the encoder (camera and encoded NDI streams) of the device.</p>\n","_postman_id":"81aa02c3-d35a-493d-ae1b-319fb79d2db1"},{"name":"Decoder Settings","item":[{"name":"Decoder Setup","item":[{"name":"decodesetup","event":[{"listen":"test","script":{"id":"594787b3-f221-46d3-a9a9-3b06e98521b6","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","\r","//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"NDIAudio\": {\r","      \"type\": \"string\"\r","    },\r","    \"ScreenSaverMode\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"NDIAudio\",\r","    \"ScreenSaverMode\",\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"NDIAudio\", [\"NDIAudioEn\", \"NDIAudioDis\", \"NDIAudioAnalog\"])\r","testResorces.shouldBeOneOf(responseJson, \"ScreenSaverMode\", [\"BirdDogSS\", \"BlackSS\", \"CaptureSS\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"46ea96fd-4489-4444-91e8-8337e2490d1f","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{}}}],"id":"65e802ca-13bd-41bc-bcfb-7c2a58ddd5b7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/decodesetup?ChNum=1","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["decodesetup"],"host":["{{BASE-URL}}"],"query":[{"key":"ChNum","value":"1"}],"variable":[]}},"response":[{"id":"5899ec75-f137-46a1-aa41-711bab97697f","name":"X1 Ultra","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{BASE-URL}}:8080/decodesetup?ChNum=1","host":["{{BASE-URL}}"],"port":"8080","path":["decodesetup"],"query":[{"key":"ChNum","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:15:56 GMT"},{"key":"Content-Length","value":"101"}],"cookie":[],"responseTime":null,"body":"{\n    \"ColorSpace\": \"RGB\",\n    \"NDIAudio\": \"NDIAudioAnalog\",\n    \"ScreenSaverMode\": \"BirdDogSS\",\n    \"TallyMode\": \"TallyOff\"\n}"}],"_postman_id":"65e802ca-13bd-41bc-bcfb-7c2a58ddd5b7"},{"name":"decodesetup","event":[{"listen":"test","script":{"id":"cca0043d-58cd-4b66-957e-b098054071ce","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","\r","//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"NDIAudio\": {\r","      \"type\": \"string\"\r","    },\r","    \"ScreenSaverMode\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"NDIAudio\",\r","    \"ScreenSaverMode\",\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"NDIAudio\", [\"NDIAudioEn\", \"NDIAudioDis\", \"NDIAudioAnalog\"])\r","testResorces.shouldBeOneOf(responseJson, \"ScreenSaverMode\", [\"BirdDogSS\", \"BlackSS\", \"CaptureSS\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"53fa3d8e-f4a2-4e27-8220-0c06fa9a3036","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{}}}],"id":"a6a1b380-344e-4d96-8a6c-a26c139f3b38","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"NDIAudio\": \"NDIAudioEn\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/decodesetup?ChNum=1","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["decodesetup"],"host":["{{BASE-URL}}"],"query":[{"key":"ChNum","value":"1"}],"variable":[]}},"response":[{"id":"c448846c-3a4b-47e8-9384-ddd32e9a0f04","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"ScreenSaverMode\": \"BirdDogSS\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{BASE-URL}}:8080/decodesetup?ChNum=1","host":["{{BASE-URL}}"],"port":"8080","path":["decodesetup"],"query":[{"key":"ChNum","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:16:10 GMT"},{"key":"Content-Length","value":"101"}],"cookie":[],"responseTime":null,"body":"{\n    \"ColorSpace\": \"RGB\",\n    \"NDIAudio\": \"NDIAudioAnalog\",\n    \"ScreenSaverMode\": \"BirdDogSS\",\n    \"TallyMode\": \"TallyOff\"\n}"}],"_postman_id":"a6a1b380-344e-4d96-8a6c-a26c139f3b38"}],"id":"2a17677c-b0f6-4b07-be5b-4a62dc04226d","description":"<p>Response contains the current decoder setup.</p>\n<p>header = \"application/json\"</p>\n<p><strong>All X Series Cameras (except X4 Ultra):</strong></p>\n<ul>\n<li><p>\"NDIAudio\" → \"NDIAudioEn\", \"NDIAudioDis\"</p>\n</li>\n<li><p>\"ScreenSaverMode\" → \"BirdDogSS\", \"BlackSS\"</p>\n</li>\n</ul>\n","_postman_id":"2a17677c-b0f6-4b07-be5b-4a62dc04226d"},{"name":"Decoder Status","item":[{"name":"decodestatus","event":[{"listen":"test","script":{"id":"977e2ae4-b562-4928-86f2-1b73ac96c367","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","\r","//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request to check the operation mode\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/operationmode\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var operationmode = response.text();\r","        // Store the desired value in a local variable\r","        pm.variables.set(\"operationmode\", operationmode);\r","    }\r","});\r","\r","var operationmode = pm.variables.get(\"operationmode\");\r","\r","//Run specific test depending on the operation mode of the device\r","if (operationmode == \"encode\") {\r","    var schema = {\r","      \"type\": \"object\",\r","      \"properties\": {\r","        \"decoder\": {\r","          \"type\": \"string\"\r","        },\r","        \"ConnectionStatus\": {\r","          \"type\": \"string\"\r","        },\r","        \"SourceName\": {\r","          \"type\": \"string\"\r","        },\r","        \"SourceIP\": {\r","          \"type\": \"string\"\r","        },\r","        \"VideoResolution\": {\r","          \"type\": \"string\"\r","        },\r","        \"VideoFramerate\": {\r","          \"type\": \"string\"\r","        },\r","        \"VideoFPS\": {\r","          \"type\": \"string\"\r","        },\r","        \"AudioChannel\": {\r","          \"type\": \"string\"\r","        },\r","        \"AudioSampleRate\": {\r","          \"type\": \"string\"\r","        },\r","        \"StreamBandwidth\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"decoder\",\r","        \"ConnectionStatus\",\r","        \"SourceName\",\r","        \"SourceIP\",\r","        \"VideoResolution\",\r","        \"VideoFramerate\",\r","        \"VideoFPS\",\r","        \"AudioChannel\",\r","        \"AudioSampleRate\",\r","        \"StreamBandwidth\"\r","      ]\r","    }\r","    \r","    \r","    jsonSchemaVerification.validateJsonSchema(response, schema);\r","    jsonRestResponses.validateStatusCode(response, 200);\r","    jsonRestResponses.validateHeader(response, header)\r","    \r","    testResorces.shouldBeOneOf(responseJson, \"decoder\", [\"enabled\"])\r","    testResorces.shouldBeOneOf(responseJson, \"ConnectionStatus\", [\"Connected\", \"Disconnected\"])\r","    testResorces.nonEmptyString(responseJson, \"SourceName\")\r","    testResorces.formattedIpAddressAndNone(responseJson, \"SourceIP\")\r","    testResorces.isAlphanumricString(responseJson, \"VideoResolution\") //This needs to be updated with the supported resolutions for each device\r","    testResorces.isAlphanumricString(responseJson, \"VideoFramerate\")\r","    testResorces.isNumericString(responseJson, \"VideoFPS\")\r","    testResorces.isNumericString(responseJson, \"AudioChannel\")\r","    testResorces.isNumericString(responseJson, \"AudioSampleRate\")\r","    testResorces.isNumericString(responseJson, \"StreamBandwidth\")\r","} else {\r","    var schama = {\r","      \"type\": \"object\",\r","      \"properties\": {\r","        \"decoder\": {\r","          \"type\": \"string\"\r","        },\r","      \"required\": [\r","        \"decoder\"\r","      ]\r","    }\r","  }\r","\r","    jsonSchemaVerification.validateJsonSchema(response, schema);\r","    jsonRestResponses.validateStatusCode(response, 200);\r","    jsonRestResponses.validateHeader(response, header)\r","\r","    testResorces.shouldBeOneOf(responseJson, \"decoder\", [\"disabled\"])\r","    \r","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}},"requests":{}}},{"listen":"prerequest","script":{"id":"34b5fc29-4ba3-4c47-a5b2-8b5391e5280e","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"a6ce7cac-b172-4d33-a206-64de65503154","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/decodestatus?ChNum=1","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["decodestatus"],"host":["{{BASE-URL}}"],"query":[{"key":"ChNum","value":"1"}],"variable":[]}},"response":[{"id":"89852621-6e9a-4bbf-b420-5f5cffac58b0","name":"X1 Ultra","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{BASE-URL}}:8080/decodestatus?ChNum=1","host":["{{BASE-URL}}"],"port":"8080","path":["decodestatus"],"query":[{"key":"ChNum","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:16:24 GMT"},{"key":"Content-Length","value":"204"}],"cookie":[],"responseTime":null,"body":"{\n    \"AudioChannel\": \"0\",\n    \"AudioSampleRate\": \"0\",\n    \"ConnectionStatus\": \"Connected\",\n    \"SourceIP\": \"None\",\n    \"SourceName\": \"None\",\n    \"StreamBandwidth\": \"31\",\n    \"VideoFPS\": \"29.97\",\n    \"VideoFramerate\": \"29.97\",\n    \"VideoResolution\": \"2160p\"\n}"}],"_postman_id":"a6ce7cac-b172-4d33-a206-64de65503154"}],"id":"e9c71a65-e6f4-4fc0-a6f8-35cdb384f45a","description":"<p>GET - Retrieve Connected NDI Source Status.</p>\n<p>header = \"application/json\"</p>\n<p>Response contains connected NDI source status.</p>\n<p><strong>All X Series Cameras (except X4 Ultra):</strong></p>\n<p>If the cameras decoder isn't enabled, e.g. the camera is in encode mode, then the API return is:</p>\n<ul>\n<li>{\"decoder\":\"disabled\"}</li>\n</ul>\n<p>When the camera is in decode mode:</p>\n<ul>\n<li><p>\"decoder\" → \"enabled\"</p>\n</li>\n<li><p>\"ConnectionStatus\" → \"Connected\", \"Disconnected\"</p>\n</li>\n<li><p>\"SourceName\" → mDNS name of the connected source</p>\n</li>\n<li><p>\"SourceIP\" → IP address of the connected source</p>\n</li>\n<li><p>\"VideoResolution\" → Output resolution from the decoder</p>\n</li>\n<li><p>\"VideoFramerate\" → Output frame rate from the decoder</p>\n</li>\n<li><p>\"VideoFPS\" → Frame rate of the output of the decoder</p>\n</li>\n<li><p>\"AudioChannel\" → Connected audio channels</p>\n</li>\n<li><p>\"AudioSampleRate\" → Audio sample rate</p>\n</li>\n<li><p>\"StreamBandwidth\" → Average NDI stream bitrate</p>\n</li>\n</ul>\n","_postman_id":"e9c71a65-e6f4-4fc0-a6f8-35cdb384f45a"},{"name":"Connect To","item":[{"name":"connectTo","event":[{"listen":"test","script":{"id":"8d4e4a9c-3d5c-4306-9700-e102bba81c53","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses'); // Fixed typo in variable name\r","const response = pm.response;\r","const header = \"application/json\";\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"sourceHostname\": {\r","      \"type\": \"string\"\r","    },\r","    \"sourceStreamName\": {\r","      \"type\": \"string\"\r","    },\r","    \"sourceIP\": {\r","      \"type\": \"string\"\r","    },\r","    \"sourcePort\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"sourceHostname\",\r","    \"sourceStreamName\",\r","    \"sourceIP\",\r","    \"sourcePort\"\r","  ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema);\r","jsonRestResponses.validateStatusCode(response, 200);\r","jsonRestResponses.validateHeader(response, header);\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"7e5ed8da-3929-4427-ab1b-7a18f33bf20d","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"382a9362-2478-4c31-96a8-efddd55c5ee2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/connectTo?location=decoder","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["connectTo"],"host":["{{BASE-URL}}"],"query":[{"description":{"content":"<p>\"decoder\", \"DecoderFailOver\"</p>\n","type":"text/plain"},"key":"location","value":"decoder"}],"variable":[]}},"response":[{"id":"76224f67-402a-4c47-b7d2-595b4c0baf6d","name":"X1 Ultra - Encode","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{BASE-URL}}:8080/connectTo","host":["{{BASE-URL}}"],"port":"8080","path":["connectTo"],"query":[{"key":"ChNum","value":"1","disabled":true},{"key":"status","value":"decoder","description":"\"decoder\", \"EncoderFailOver\", \"DecoderFailOver\"","disabled":true},{"key":"sourcename","value":"X5-05C7C (CAM)","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:16:41 GMT"},{"key":"Content-Length","value":"58"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"Setting cannot be changed while in Encode mode\"\n}"}],"_postman_id":"382a9362-2478-4c31-96a8-efddd55c5ee2"},{"name":"connectTo","event":[{"listen":"test","script":{"id":"8d4e4a9c-3d5c-4306-9700-e102bba81c53","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\";\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"sourceHostame\": {\r","      \"type\": \"string\"\r","    },\r","    \"sourceStreamName\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"sourcename\",\r","    \"sourceStreamName\"\r","  ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema);\r","jsonRestResponses.validateStatusCode(response, 200);\r","jsonRestResponses.validateHeader(response, header);\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"7e5ed8da-3929-4427-ab1b-7a18f33bf20d","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"d9bedc4d-ff4f-492c-b983-3c140640e679","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"sourceHostname\": \"BirdDog-12345\",\r\n    \"sourceStreamName\": \"CAM\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/connectTo?location=decoder","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["connectTo"],"host":["{{BASE-URL}}"],"query":[{"description":{"content":"<p>\"decoder\", \"EncoderFailOver\", \"DecoderFailOver\", \"Genlock\"</p>\n","type":"text/plain"},"key":"location","value":"decoder"}],"variable":[]}},"response":[{"id":"70393687-3ddb-4a7f-976b-3ffe962c19bc","name":"X1 Ultra - Encode","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{BASE-URL}}:8080/connectTo","host":["{{BASE-URL}}"],"port":"8080","path":["connectTo"],"query":[{"key":"ChNum","value":"1","disabled":true},{"key":"status","value":"decoder","description":"\"decoder\", \"EncoderFailOver\", \"DecoderFailOver\"","disabled":true},{"key":"sourcename","value":"X5-05C7C (CAM)","disabled":true}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:16:41 GMT"},{"key":"Content-Length","value":"58"}],"cookie":[],"responseTime":null,"body":"{\n    \"error\": \"Setting cannot be changed while in Encode mode\"\n}"}],"_postman_id":"d9bedc4d-ff4f-492c-b983-3c140640e679"}],"id":"98639081-5204-45de-9f87-e1ce0f530211","description":"<p><strong>*NOT YET COMPLETE ON ANY CAMERAS</strong>*</p>\n<p>GET - Retrieve connected NDI Source Information</p>\n<p>In the GET request the parameter \"location\" can be used to query different NDI connection options. If there is no source connected to the quired location the return will be \"None\". Values for the \"location\" parameter can be:</p>\n<ul>\n<li><p>\"decoder\" → available of X1, X1 Ultra &amp; X5 Ultra, and will return the source that is currently selected in the \"NDI Decode Source\" dropdown list</p>\n</li>\n<li><p><del>\"EncoderFailOver\" → will return the source that is currently selected in the \"Encoder Settings\" → \"Failover Source\" dropdown list</del></p>\n</li>\n<li><p>\"DecoderFailOver\" → will return the source that is currently selected in the \"Decoder Settings\" → \"Failover Source\" dropdown list</p>\n</li>\n<li><p><del>\"Genlock\" → will return the soruce that is currently selected in the \"Encoder Settings\" → \"Genlock Source\" dropdown list</del></p>\n</li>\n</ul>\n<p>To check what source the decoder of a camera is connected to the cURL command would be:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>curl --location \"192.168.100.100:8080/connectTo?location=decoder\"\n\n</code></pre><p>and the GET response body would include:</p>\n<p><strong>X1, X1 Ultra &amp; X5 Ultra:</strong></p>\n<ul>\n<li><p>\"sourceHostname\" → the hostname of the currently connected source.</p>\n</li>\n<li><p>\"sourceStreamName\" → the NDI stream name of the currently connected source.</p>\n</li>\n<li><p>\"sourceIP\" → the IP address of the currently connected source.</p>\n</li>\n<li><p>\"sourcePort\" → the port the currently connected source is using for the NDI connection</p>\n</li>\n</ul>\n<hr />\n<p>POST - Set NDI source connections</p>\n<p>The \"location\" parameter will also be used to make an NDI connection in a specific location, along with the \"sourceHostname\" &amp; \"sourceStreamName\". Both the \"sourceHostname\" &amp; \"sourceStreamName\" JSON key/value pairs are mandatory, for example:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>curl --location \"192.168.100.61:8080/connectTo?location=decoder\" --header \"Content-Type: application/json\" --data \"{\n    \\\"sourceHostname\\\": \\\"BirdDog-12345\\\",\n    \\\"sourceStreamName\\\": \\\"CAM\\\"\n}\"\n\n</code></pre><p>With the \"sourceHostname\" &amp; \"sourceStreamName\" being placed in the body of the API call as raw JSON data.</p>\n","_postman_id":"98639081-5204-45de-9f87-e1ce0f530211"},{"name":"Decode Transport","item":[{"name":"decodeTransport","event":[{"listen":"test","script":{"id":"96154ee7-f2f9-4709-b226-346db0fb608e","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","\r","//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"rxpm\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"rxpm\"\r","  ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"rxpm\", [\"TCP\", \"UDP\", \"RUDP\", \"Multicast\"])"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"314d1e5f-0b11-4cc6-9595-562973d309b2","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{}}}],"id":"a600a57c-4470-4458-9e68-7eb5685bfa4c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/decodeTransport","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["decodeTransport"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"de47fe65-c854-4246-8aac-ffbb08078a27","name":"X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/decodeTransport"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:17:11 GMT"},{"key":"Content-Length","value":"97"}],"cookie":[],"responseTime":null,"body":"{\n    \"Txmcttl\": \"1\",\n    \"Txnetmask\": \"255.255.0.0\",\n    \"Txnetprefix\": \"239.255.0.0\",\n    \"Txpm\": \"RUDP\",\n    \"rxpm\": \"RUDP\"\n}"}],"_postman_id":"a600a57c-4470-4458-9e68-7eb5685bfa4c"},{"name":"decodeTransport","event":[{"listen":"test","script":{"id":"96154ee7-f2f9-4709-b226-346db0fb608e","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","\r","//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"rxpm\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"rxpm\"\r","  ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"rxpm\", [\"TCP\", \"UDP\", \"RUDP\", \"Multicast\"])"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"503abdbd-139f-4900-a080-e4e033f2dd0b","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{}}}],"id":"a1879024-3500-45ea-9cbd-85cc4d548e6a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"rxpm\": \"TCP\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/decodeTransport","urlObject":{"port":"8080","path":["decodeTransport"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"ec57a5af-0def-48fc-849d-4b9b12e66cc1","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"rxpm\": \"TCP\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/decodeTransport"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:17:28 GMT"},{"key":"Content-Length","value":"155"}],"cookie":[],"responseTime":null,"body":"{\n    \"NDIDisServ\": \"NDIDisServDis\",\n    \"NDIDisServIP\": \"192.168.1.100\",\n    \"Txmcttl\": \"1\",\n    \"Txnetmask\": \"255.255.0.0\",\n    \"Txnetprefix\": \"239.255.0.0\",\n    \"Txpm\": \"TCP\",\n    \"rxpm\": \"TCP\"\n}"}],"_postman_id":"a1879024-3500-45ea-9cbd-85cc4d548e6a"}],"id":"9f5a163f-18a7-44cb-bada-278211802cf3","description":"<p><strong>*NOT UPDATED FOR X5 YET</strong>*</p>\n<p>GET - Retrieve Current NDI Network Settings.</p>\n<p>POST - Set Current NDI Network Settings.</p>\n<p>header = \"application/json\"</p>\n<p>Set or retrieve the decoders current NDI network settings.</p>\n<p><strong>All Cameras</strong> (except X4 Ultra)<strong>:</strong></p>\n<p>Response includes:</p>\n<ul>\n<li>\"rxpm\" (Receiver preferred method) → \"TCP\", \"UDP\", \"RUDP\" or \"Multicast\"</li>\n</ul>\n","_postman_id":"9f5a163f-18a7-44cb-bada-278211802cf3"}],"id":"456b353c-025d-4b2f-b8c4-5174cb64594d","description":"<p>The APIs in this folder are used by the cameras that have an in-built decoder.</p>\n","_postman_id":"456b353c-025d-4b2f-b8c4-5174cb64594d"},{"name":"Camera PTZ and Colour Settings","item":[{"name":"Exposure Setup","item":[{"name":"birddogexpsetup","event":[{"listen":"prerequest","script":{"id":"81712dcf-00b9-42bb-9bd7-7413fd6e3513","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersionTest = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersionTest === 'BirdDog X1' || HardwareVersionTest === 'BirdDog X1 Ultra' || HardwareVersionTest === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"ExpMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"ShutterSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"IrisLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"ExpCompLvl\": {\r","      \"type\": \"string\"\r","    },\r","    \"GainLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"BrightLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"SmartExposure\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ExpMode\",\r","    \"ShutterSpeed\",\r","    \"IrisLevel\",\r","    \"ExpCompLvl\",\r","    \"GainLevel\",\r","    \"BrightLevel\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersionTest === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"ExpMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"SlowShutter\": {\r","      \"type\": \"string\"\r","    },\r","    \"GainLimit\": {\r","      \"type\": \"string\"\r","    },\r","    \"HighSensitivity\": {\r","      \"type\": \"string\"\r","    },\r","    \"Backlight\": {\r","      \"type\": \"string\"\r","    },\r","    \"ExposureComp\": {\r","      \"type\": \"string\"\r","    },\r","    \"Gain\": {\r","      \"type\": \"string\"\r","    },\r","    \"IrisLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"ShutterSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"BrightLevel\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ExpMode\",\r","    \"SlowShutter\",\r","    \"GainLimit\",\r","    \"HighSensitivity\",\r","    \"Backlight\",\r","    \"ExposureComp\",\r","    \"Gain\",\r","    \"IrisLevel\",\r","    \"ShutterSpeed\",\r","    \"BrightLevel\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersionTest === \"BirdDog X4 Ultra\"){\r","    var schema = {\r","          \"type\": \"object\",\r","  \"properties\": {\r","    \"ExpMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"ExpCompEn\": {\r","      \"type\": \"string\"\r","    },\r","    \"ExpCompLvl\": {\r","      \"type\": \"string\"\r","    },\r","    \"GainLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"GainLimit\": {\r","      \"type\": \"string\"\r","    },\r","    \"BackLight\": {\r","      \"type\": \"string\"\r","    },\r","    \"IrisLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"ShutterSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"BrightLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"Meter\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ExpMode\",\r","    \"ExpCompEn\",\r","    \"ExpCompLvl\",\r","    \"GainLevel\",\r","    \"GainLimit\",\r","    \"BackLight\",\r","    \"IrisLevel\",\r","    \"ShutterSpeed\",\r","    \"BrightLevel\",\r","    \"Meter\"\r","  ]\r","  }\r","}"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"id":"62298e25-e832-400d-bf82-f9147e6ebd0f","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schemaTest = pm.environment.get(\"schema\");","var HardwareVersionPost = pm.environment.get(\"Hardware\")","","// Start of API tests","jsonSchemaVerification.validateJsonSchema(response, schemaTest)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","if (HardwareVersionPost === 'BirdDog X1' || HardwareVersionPost === 'BirdDog X1 Ultra' || HardwareVersionPost === 'BirdDog MAX') {","    testResorces.shouldBeOneOf(responseJson, \"ExpMode\", [\"FULL-AUTO\", \"MANUAL\", \"BRIGHT\", \"SHUTTER-PRI\", \"IRIS-PRI\"])","    testResorces.betweenTwoNumbers(responseJson, \"ExpCompLvl\", -7, 7)","    testResorces.betweenTwoNumbers(responseJson, \"GainLevel\", 0, 14)","    testResorces.betweenTwoNumbers(responseJson, \"ShutterSpeed\", 0, 20)","    testResorces.betweenTwoNumbers(responseJson, \"IrisLevel\", 0, 13)","    testResorces.betweenTwoNumbers(responseJson, \"BrightLevel\", 0, 17)","}","","if (HardwareVersionPost === 'BirdDog X5 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"ExpMode\", [ \"FULL-AUTO\", \"MANUAL\", \"BRIGHT\", \"SHUTTER-PRI\", \"IRIS-PRI\"])","    testResorces.shouldBeOneOf(responseJson, \"SlowShutter\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"GainLimit\", 24, 33)","    testResorces.shouldBeOneOf(responseJson, \"HighSensitivity\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Backlight\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"ExposureComp\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"WDR\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"Gain\", 0, 14)","    testResorces.betweenTwoNumbers(responseJson, \"IrisLevel\", 0, 13)","    testResorces.shouldBeOneOf(responseJson, \"ShutterSpeed\", [\"1/1\", \"1/2\", \"1/4\", \"1/8\", \"1/15\", \"1/30\", \"1/60\", \"1/90\", \"1/100\", \"1/125\", \"1/180\", \"1/250\", \"1/350\", \"1/500\", \"1/725\", \"1/1000\", \"1/1.5000\", \"1/2000\", \"1/3000\", \"1/4000\", \"1/6000\", \"1/10000\"])","    testResorces.betweenTwoNumbers(responseJson, \"BrightLevel\", 0, 31)","}","","if (HardwareVersionPost === 'BirdDog X4 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"ExpMode\", [\"FULL-AUTO\", \"MANUAL\", \"BRIGHT\", \"SHUTTER-PRI\", \"IRIS-PRI\"])","    testResorces.shouldBeOneOf(responseJson, \"ExpCompEn\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"ExpCompLvl\", -7, 7)","    testResorces.betweenTwoNumbers(responseJson, \"GainLevel\", 0, 7)","    testResorces.betweenTwoNumbers(responseJson, \"GainLimit\", 0, 15)","    testResorces.betweenTwoNumbers(responseJson, \"ShutterSpeed\", 0, 16)","    testResorces.betweenTwoNumbers(responseJson, \"IrisLevel\", 0, 17)","    testResorces.betweenTwoNumbers(responseJson, \"BrightLevel\", 0, 17)","    testResorces.betweenTwoNumbers(responseJson, \"Meter\", 0, 3)","    testResorces.shouldBeOneOf(responseJson, \"BackLight\", [\"On\", \"Off\"])","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}}],"id":"17f193d0-e42a-4b8d-b9a5-56d8a8150d34","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogexpsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogexpsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"59c7f7ee-e516-4a91-b352-ad0cee8bd4e0","name":"X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogexpsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:18:14 GMT"},{"key":"Content-Length","value":"149"}],"cookie":[],"responseTime":null,"body":"{\n    \"ExpMode\": \"FULL-AUTO\",\n    \"ShutterSpeed\": \"8\",\n    \"IrisLevel\": \"13\",\n    \"ExpCompLvl\": \"0\",\n    \"GainLevel\": \"0\",\n    \"GainLimit\": \"0\",\n    \"BrightLevel\": \"0\",\n    \"SmartExposure\": \"Off\"\n}"}],"_postman_id":"17f193d0-e42a-4b8d-b9a5-56d8a8150d34"},{"name":"birddogexpsetup","event":[{"listen":"test","script":{"id":"ab8bc5a5-467a-46c5-ad60-dcb3f5b5cf82","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schemaTest = pm.environment.get(\"schema\");","var HardwareVersionPost = pm.environment.get(\"Hardware\")","","// Start of API tests","jsonSchemaVerification.validateJsonSchema(response, schemaTest)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","if (HardwareVersionPost === 'BirdDog X1' || HardwareVersionPost === 'BirdDog X1 Ultra' || HardwareVersionPost === 'BirdDog MAX') {","    testResorces.shouldBeOneOf(responseJson, \"ExpMode\", [\"FULL-AUTO\", \"MANUAL\", \"BRIGHT\", \"SHUTTER-PRI\", \"IRIS-PRI\"])","    testResorces.betweenTwoNumbers(responseJson, \"ExpCompLvl\", -7, 7)","    testResorces.betweenTwoNumbers(responseJson, \"GainLevel\", 0, 14)","    testResorces.betweenTwoNumbers(responseJson, \"ShutterSpeed\", 0, 20)","    testResorces.betweenTwoNumbers(responseJson, \"IrisLevel\", 0, 13)","    testResorces.betweenTwoNumbers(responseJson, \"BrightLevel\", 0, 17)","}","","if (HardwareVersionPost === 'BirdDog X5 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"ExpMode\", [ \"FULL-AUTO\", \"MANUAL\", \"BRIGHT\", \"SHUTTER-PRI\", \"IRIS-PRI\"])","    testResorces.shouldBeOneOf(responseJson, \"SlowShutter\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"GainLimit\", 24, 33)","    testResorces.shouldBeOneOf(responseJson, \"HighSensitivity\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Backlight\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"ExposureComp\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"WDR\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"Gain\", 0, 14)","    testResorces.betweenTwoNumbers(responseJson, \"IrisLevel\", 0, 13)","    testResorces.shouldBeOneOf(responseJson, \"ShutterSpeed\", [\"1/1\", \"1/2\", \"1/4\", \"1/8\", \"1/15\", \"1/30\", \"1/60\", \"1/90\", \"1/100\", \"1/125\", \"1/180\", \"1/250\", \"1/350\", \"1/500\", \"1/725\", \"1/1000\", \"1/1.5000\", \"1/2000\", \"1/3000\", \"1/4000\", \"1/6000\", \"1/10000\"])","    testResorces.betweenTwoNumbers(responseJson, \"BrightLevel\", 0, 31)","}","","if (HardwareVersionPost === 'BirdDog X4 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"ExpMode\", [\"FULL-AUTO\", \"MANUAL\", \"BRIGHT\", \"SHUTTER-PRI\", \"IRIS-PRI\"])","    testResorces.shouldBeOneOf(responseJson, \"ExpCompEn\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"ExpCompLvl\", -7, 7)","    testResorces.betweenTwoNumbers(responseJson, \"GainLevel\", 0, 7)","    testResorces.betweenTwoNumbers(responseJson, \"GainLimit\", 0, 15)","    testResorces.betweenTwoNumbers(responseJson, \"ShutterSpeed\", 0, 16)","    testResorces.betweenTwoNumbers(responseJson, \"IrisLevel\", 0, 17)","    testResorces.betweenTwoNumbers(responseJson, \"BrightLevel\", 0, 17)","    testResorces.betweenTwoNumbers(responseJson, \"Meter\", 0, 3)","    testResorces.shouldBeOneOf(responseJson, \"BackLight\", [\"On\", \"Off\"])","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"8829317c-410f-47e0-b16a-e765d8b37e0e","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersionTest = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersionTest === 'BirdDog X1' || HardwareVersionTest === 'BirdDog X1 Ultra' || HardwareVersionTest === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"ExpMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"ShutterSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"IrisLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"ExpCompLvl\": {\r","      \"type\": \"string\"\r","    },\r","    \"GainLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"BrightLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"SmartExposure\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ExpMode\",\r","    \"ShutterSpeed\",\r","    \"IrisLevel\",\r","    \"ExpCompLvl\",\r","    \"GainLevel\",\r","    \"BrightLevel\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersionTest === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"ExpMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"SlowShutter\": {\r","      \"type\": \"string\"\r","    },\r","    \"GainLimit\": {\r","      \"type\": \"string\"\r","    },\r","    \"HighSensitivity\": {\r","      \"type\": \"string\"\r","    },\r","    \"Backlight\": {\r","      \"type\": \"string\"\r","    },\r","    \"ExposureComp\": {\r","      \"type\": \"string\"\r","    },\r","    \"Gain\": {\r","      \"type\": \"string\"\r","    },\r","    \"IrisLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"ShutterSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"BrightLevel\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ExpMode\",\r","    \"SlowShutter\",\r","    \"GainLimit\",\r","    \"HighSensitivity\",\r","    \"Backlight\",\r","    \"ExposureComp\",\r","    \"Gain\",\r","    \"IrisLevel\",\r","    \"ShutterSpeed\",\r","    \"BrightLevel\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersionTest === \"BirdDog X4 Ultra\"){\r","    var schema = {\r","          \"type\": \"object\",\r","  \"properties\": {\r","    \"ExpMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"ExpCompEn\": {\r","      \"type\": \"string\"\r","    },\r","    \"ExpCompLvl\": {\r","      \"type\": \"string\"\r","    },\r","    \"GainLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"GainLimit\": {\r","      \"type\": \"string\"\r","    },\r","    \"BackLight\": {\r","      \"type\": \"string\"\r","    },\r","    \"IrisLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"ShutterSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"BrightLevel\": {\r","      \"type\": \"string\"\r","    },\r","    \"Meter\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ExpMode\",\r","    \"ExpCompEn\",\r","    \"ExpCompLvl\",\r","    \"GainLevel\",\r","    \"GainLimit\",\r","    \"BackLight\",\r","    \"IrisLevel\",\r","    \"ShutterSpeed\",\r","    \"BrightLevel\",\r","    \"Meter\"\r","  ]\r","  }\r","}"],"type":"text/javascript","packages":{}}}],"id":"98e8eb98-6254-41ef-bed9-806e64db41a7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"ExpMode\": \"FULL-AUTO\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogexpsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogexpsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"9c41023a-901f-43cf-aac8-f4cca71ce474","name":"X1 Ultra","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"GainLimit\": \"20\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogexpsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:18:29 GMT"},{"key":"Content-Length","value":"149"}],"cookie":[],"responseTime":null,"body":"{\n    \"ExpMode\": \"FULL-AUTO\",\n    \"ShutterSpeed\": \"8\",\n    \"IrisLevel\": \"13\",\n    \"ExpCompLvl\": \"0\",\n    \"GainLevel\": \"0\",\n    \"GainLimit\": \"0\",\n    \"BrightLevel\": \"0\",\n    \"SmartExposure\": \"Off\"\n}"}],"_postman_id":"98e8eb98-6254-41ef-bed9-806e64db41a7"}],"id":"e3da59b8-35b0-4c35-814e-b00029bf671f","description":"<p>GET - Retrieve BirdDog Exposure Setup Settings.</p>\n<p>POST - Set BirdDog Exposure Setup Settings.</p>\n<p>Responses contain:</p>\n<p><strong>X1, X1 Ultra &amp; MAX:</strong></p>\n<ul>\n<li><p>\"ExpMode\" → \"FULL-AUTO\", \"MANUAL\", \"BRIGHT\", \"SHUTTER-PRI\" or \"IRIS-PRI\"</p>\n</li>\n<li><p><b>FULL-AUTO</b></p>\n<ul>\n<li>\"ExpCompLvl\" → Range (-7 to 7)</li>\n</ul>\n</li>\n<li><p><b>MANUAL</b></p>\n<ul>\n<li><p>\"GainLevel\" → Range (0 - 14); 0 = 0dB, 1 = 3dB... 14 = 42dB</p>\n</li>\n<li><p>\"ShutterSpeed\" → Range (7 - 27)</p>\n</li>\n<li><p>\"IrisLevel\" → Range (0 - 13); 0= CLOSED</p>\n</li>\n</ul>\n</li>\n<li><p><b>BRIGHT</b></p>\n<ul>\n<li>\"BrightLevel\" → Range (0 - 17)</li>\n</ul>\n</li>\n</ul>\n<hr />\n<p><strong>X4 Ultra:</strong></p>\n<ul>\n<li>\"ExpMode\" → \"FULL-AUTO\", \"MANUAL\", \"BRIGHT\", \"SHUTTER-PRI\" or \"IRIS-PRI\"</li>\n</ul>\n<p>AUTO, SHUTTER-PRI &amp; IRIS-PRI<strong>:</strong></p>\n<ul>\n<li><p>\"ExpCompEn\" → \"Off\", \"On\"</p>\n</li>\n<li><p>\"ExpCompLvl\" → Range -7 to 7</p>\n</li>\n<li><p>\"GainLimit\" → Range 0 to 15</p>\n</li>\n<li><p>\"Meter\" → 0 = Average, 1 = Centre, 2 = Smart, 3 = Top</p>\n</li>\n<li><p>\"BackLight\" → \"Off\", \"On\"</p>\n</li>\n</ul>\n<p>MANUAL<strong>:</strong></p>\n<ul>\n<li><p>\"ShutterSpeed\" → Range 0 to 16</p>\n<ul>\n<li>0 = 1/30, 1 = 1/50, 2 = 1/60, 3 = 1/100, 4 = 1/125, 5 = 1/200, 6 = 1/250, 7 = 1/350, 8 = 1/500 ,9 = 1/725, 10 = 1/1000, 11 = 1/1500, 12 = 1/2000, 13 = 1/3000, 14 = 1/4000, 15 = 1/6000, 16 = 1/10000</li>\n</ul>\n</li>\n<li><p>\"IrisLevel\" → Range 0 &amp; 6 to 17</p>\n<ul>\n<li>0 = Close aperture &amp; 6 =F11.0, 7 = F9.6, 8 = F8.0, 9 = F6.8, 10 = F5.6, 11 = F4.8, 12 = F4.0, 13 = F3.4, 14 = F2.8, 15 = F2.4, 16 = F2.0, 17 = F1.86</li>\n</ul>\n</li>\n<li><p>\"GainLevel\" → Range 0 to 7; 0 = 0dB</p>\n</li>\n</ul>\n<p>BRIGHT<strong>:</strong></p>\n<ul>\n<li>\"BrightLevel\" → Range 0 to 17</li>\n</ul>\n<hr />\n<p><strong>X5 Ultra:</strong></p>\n<ul>\n<li><p>\"ExpMode\" → \"FULL-AUTO\", \"MANUAL\", \"BRIGHT\", \"SHUTTER-PRI\", \"IRIS-PRI\" or \"BRIGHT</p>\n</li>\n<li><p><b>FULL-AUTO</b></p>\n<ul>\n<li><p>\"SlowShutter\" → \"Off\", \"On\"</p>\n</li>\n<li><p>\"GainLimit\" → \"24\", \"27\", \"30\", \"33\"</p>\n</li>\n<li><p>\"HighSensitivity\" → \"Off\", \"On\"</p>\n</li>\n<li><p>\"Backlight\" → \"Off\", \"On\"</p>\n</li>\n<li><p>\"ExposureComp\" → \"Off\", \"On\"</p>\n</li>\n</ul>\n</li>\n<li><p><b>MANUAL</b></p>\n<ul>\n<li><p>\"Gain\" → 0 = 0 dB, 1 = 3 dB ..... 11 = 33 dB</p>\n</li>\n<li><p>\"IrisLevel\" → \"CLOSED\", 1 = F14, 2 = F11, 3 = F9.6, 4 = F8.0, 5 = F6.8, 6 = F5.6, 7 = F4.8, 8 = F4.0, 9 = F3.4, 10 = F2.8, 11 = F2.4. 12 = F2.0, 13 = F1.6</p>\n</li>\n<li><p>\"ShutterSpeed\" → \"1/1\", \"1/2\", \"1/4\", \"1/8\", \"1/15\", \"1/30\", \"1/60\", \"1/90\", \"1/100\", \"1/125\", \"1/180\", \"1/250\", \"1/350\", \"1/500\", \"1/725\", \"1/1000\", \"1/1.5000\", \"1/2000\", \"1/3000\", \"1/4000\", \"1/6000\", \"1/10000\"</p>\n</li>\n</ul>\n</li>\n<li><p><b>BRIGHT</b></p>\n<ul>\n<li>\"BrightLevel\" → Range 0 to 31</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"e3da59b8-35b0-4c35-814e-b00029bf671f"},{"name":"Picture Setup","item":[{"name":"birddogpicsetup","event":[{"listen":"test","script":{"id":"c2f2de54-0f12-4235-9066-2549bf7c954f","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"Hardware\")","","// Start of API tests","jsonSchemaVerification.validateJsonSchema(response, schema)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {","    testResorces.betweenTwoNumbers(responseJson, \"Sharpness\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"TWODNR\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"ThreeDNR\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"Saturation\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"Hue\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"Contrast\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"Brightness\", 0, 100)","    testResorces.shouldBeOneOf(responseJson, \"Flip\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Mirror\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"BackLightCom\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"WDREnable\", [\"On\", \"Off\", \"None\"])","    testResorces.shouldBeOneOf(responseJson, \"HighlightComp\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Gamma\", [\"default\", \"0.45\", \"0.50\", \"0.55\", \"0.63\"])","    testResorces.shouldBeOneOf(responseJson, \"DeFlicker\", [\"default\", \"50Hz\", \"60Hz\"])","}","","if (HardwareVersion === 'BirdDog X5 Ultra') {","    testResorces.betweenTwoNumbers(responseJson, \"ThreeDNR\", 0, 3)","    testResorces.shouldBeOneOf(responseJson, \"Flip\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Mirror\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Stablizer\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"Saturation\", 0, 10)","    testResorces.betweenTwoNumbers(responseJson, \"Contrast\", 0, 4)","    testResorces.betweenTwoNumbers(responseJson, \"Sharpness\", 0, 3)","    testResorces.betweenTwoNumbers(responseJson, \"Hue\", 1, 15)","}","","if (HardwareVersion === 'BirdDog X4 Ultra') {","    testResorces.betweenTwoNumbers(responseJson, \"Saturation\", 0, 14)","    testResorces.shouldBeOneOf(responseJson, \"Flip\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"Hue\", 0, 100)","    testResorces.shouldBeOneOf(responseJson, \"Mirror\", [\"On\", \"Off\"])","    // testResorces.betweenTwoNumbers(responseJson, \"TwoDNR\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"ThreeDNR\", 0, 9)","    testResorces.betweenTwoNumbers(responseJson, \"Contrast\", 0, 14)","    testResorces.shouldBeOneOf(responseJson, \"Gamma\", [\"default\", \"0.45\", \"0.48\", \"0.50\", \"0.56\", \"PC\"])","    testResorces.betweenTwoNumbers(responseJson, \"Sharpness\", 0, 11)","    testResorces.betweenTwoNumbers(responseJson, \"Brightness\", 0, 14)","    testResorces.shouldBeOneOf(responseJson, \"BackLightCom\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"WDRLevel\", 1, 8)","    testResorces.shouldBeOneOf(responseJson, \"HighlightComp\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"DeFlicker\", [\"default\", \"50Hz\", \"60Hz\"])","    testResorces.shouldBeOneOf(responseJson, \"BWMode\", [\"On\", \"Off\"])","}",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"2094f638-3314-4619-a7b3-cdb0411af348","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Sharpness\": {\r","      \"type\": \"string\"\r","    },\r","    \"TWODNR\": {\r","      \"type\": \"string\"\r","    },\r","    \"ThreeDNR\": {\r","      \"type\": \"string\"\r","    },\r","    \"Flip\": {\r","      \"type\": \"string\"\r","    },\r","    \"Mirror\": {\r","      \"type\": \"string\"\r","    },\r","    \"BackLightCom\": {\r","      \"type\": \"string\"\r","    },\r","    \"WDREnable\": {\r","      \"type\": \"string\"\r","    },\r","    \"Saturation\": {\r","      \"type\": \"string\"\r","    },\r","    \"Hue\": {\r","      \"type\": \"string\"\r","    },\r","    \"Contrast\": {\r","      \"type\": \"string\"\r","    },\r","    \"Brightness\": {\r","      \"type\": \"string\"\r","    },\r","    \"Gamma\": {\r","      \"type\": \"string\"\r","    },\r","    \"DeFlicker\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Sharpness\",\r","    \"TWODNR\",\r","    \"ThreeDNR\",\r","    \"Flip\",\r","    \"Mirror\",\r","    \"BackLightCom\",\r","    \"WDREnable\",\r","    \"Saturation\",\r","    \"Hue\",\r","    \"Contrast\",\r","    \"Brightness\",\r","    \"Gamma\",\r","    \"DeFlicker\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"ThreeDNR\": {\r","      \"type\": \"string\"\r","    },\r","    \"Flip\": {\r","      \"type\": \"string\"\r","    },\r","    \"Mirror\": {\r","      \"type\": \"string\"\r","    },\r","    \"Stablizer\": {\r","      \"type\": \"string\"\r","    },\r","    \"Saturation\": {\r","      \"type\": \"string\"\r","    },\r","    \"Contrast\": {\r","      \"type\": \"string\"\r","    },\r","    \"Sharpness\": {\r","      \"type\": \"string\"\r","    },\r","    \"Hue\": {\r","      \"type\": \"string\"\r","    },\r","    \"WDREnable\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ThreeDNR\",\r","    \"Flip\",\r","    \"Mirror\",\r","    \"Stablizer\",\r","    \"Saturation\",\r","    \"Contrast\",\r","    \"Sharpness\",\r","    \"Hue\",\r","    \"WDREnable\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersion === \"BirdDog X4 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"ThreeDNR\": {\r","      \"type\": \"string\"\r","    },\r","    \"Flip\": {\r","      \"type\": \"string\"\r","    },\r","    \"Mirror\": {\r","      \"type\": \"string\"\r","    },\r","    \"Saturation\": {\r","      \"type\": \"string\"\r","    },\r","    \"Contrast\": {\r","      \"type\": \"string\"\r","    },\r","    \"Sharpness\": {\r","      \"type\": \"string\"\r","    },\r","    \"Hue\": {\r","      \"type\": \"string\"\r","    },\r","    \"WDREnable\": {\r","      \"type\": \"string\"\r","    },\r","    \"Luminance\": {\r","      \"type\": \"string\"\r","    },\r","    \"BWMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"Gamma\": {\r","      \"type\": \"string\"\r","    },\r","    \"DeFlicker\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ThreeDNR\",\r","    \"Flip\",\r","    \"Mirror\",\r","    \"Saturation\",\r","    \"Contrast\",\r","    \"Sharpness\",\r","    \"Hue\",\r","    \"WDREnable\",\r","    \"Luminance\",\r","    \"BWMode\",\r","    \"Gamma\",\r","    \"DeFlicker\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"c2a98db6-6408-499b-bacb-d8c7d6ec8e16","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogpicsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogpicsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"b9081efe-8e80-4fe5-8247-9689aa063382","name":"X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogpicsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:18:43 GMT"},{"key":"Content-Length","value":"306"}],"cookie":[],"responseTime":null,"body":"{\n    \"Flip\": \"Off\",\n    \"Mirror\": \"Off\",\n    \"Effect\": \"Off\",\n    \"WDREnable\": \"Off\",\n    \"WideDynamicRange\": \"0\",\n    \"Gamma\": \"default\",\n    \"BackLightCom\": \"Off\",\n    \"DeFlicker\": \"50Hz\",\n    \"HighlightComp\": \"Off\",\n    \"Portrait\": \"Off\",\n    \"Brightness\": \"50\",\n    \"Color\": \"50\",\n    \"Saturation\": \"50\",\n    \"Hue\": \"50\",\n    \"Contrast\": \"50\",\n    \"Sharpness\": \"50\",\n    \"TWODNR\": \"30\",\n    \"ThreeDNR\": \"30\"\n}"}],"_postman_id":"c2a98db6-6408-499b-bacb-d8c7d6ec8e16"},{"name":"birddogpicsetup","event":[{"listen":"prerequest","script":{"id":"b31525c4-a57c-417a-a890-d68750596a6a","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Sharpness\": {\r","      \"type\": \"string\"\r","    },\r","    \"TWODNR\": {\r","      \"type\": \"string\"\r","    },\r","    \"ThreeDNR\": {\r","      \"type\": \"string\"\r","    },\r","    \"Flip\": {\r","      \"type\": \"string\"\r","    },\r","    \"Mirror\": {\r","      \"type\": \"string\"\r","    },\r","    \"BackLightCom\": {\r","      \"type\": \"string\"\r","    },\r","    \"WDREnable\": {\r","      \"type\": \"string\"\r","    },\r","    \"Saturation\": {\r","      \"type\": \"string\"\r","    },\r","    \"Hue\": {\r","      \"type\": \"string\"\r","    },\r","    \"Contrast\": {\r","      \"type\": \"string\"\r","    },\r","    \"Brightness\": {\r","      \"type\": \"string\"\r","    },\r","    \"Gamma\": {\r","      \"type\": \"string\"\r","    },\r","    \"DeFlicker\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Sharpness\",\r","    \"TWODNR\",\r","    \"ThreeDNR\",\r","    \"Flip\",\r","    \"Mirror\",\r","    \"BackLightCom\",\r","    \"WDREnable\",\r","    \"Saturation\",\r","    \"Hue\",\r","    \"Contrast\",\r","    \"Brightness\",\r","    \"Gamma\",\r","    \"DeFlicker\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"ThreeDNR\": {\r","      \"type\": \"string\"\r","    },\r","    \"Flip\": {\r","      \"type\": \"string\"\r","    },\r","    \"Mirror\": {\r","      \"type\": \"string\"\r","    },\r","    \"Stablizer\": {\r","      \"type\": \"string\"\r","    },\r","    \"Saturation\": {\r","      \"type\": \"string\"\r","    },\r","    \"Contrast\": {\r","      \"type\": \"string\"\r","    },\r","    \"Sharpness\": {\r","      \"type\": \"string\"\r","    },\r","    \"Hue\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ThreeDNR\",\r","    \"Flip\",\r","    \"Mirror\",\r","    \"Stablizer\",\r","    \"Saturation\",\r","    \"Contrast\",\r","    \"Sharpness\",\r","    \"Hue\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersion === \"BirdDog X4 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"ThreeDNR\": {\r","      \"type\": \"string\"\r","    },\r","    \"Flip\": {\r","      \"type\": \"string\"\r","    },\r","    \"Mirror\": {\r","      \"type\": \"string\"\r","    },\r","    \"Saturation\": {\r","      \"type\": \"string\"\r","    },\r","    \"Contrast\": {\r","      \"type\": \"string\"\r","    },\r","    \"Sharpness\": {\r","      \"type\": \"string\"\r","    },\r","    \"Hue\": {\r","      \"type\": \"string\"\r","    },\r","    \"WDREnable\": {\r","      \"type\": \"string\"\r","    },\r","    \"Luminance\": {\r","      \"type\": \"string\"\r","    },\r","    \"BWMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"Gamma\": {\r","      \"type\": \"string\"\r","    },\r","    \"DeFlicker\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"ThreeDNR\",\r","    \"Flip\",\r","    \"Mirror\",\r","    \"Saturation\",\r","    \"Contrast\",\r","    \"Sharpness\",\r","    \"Hue\",\r","    \"WDREnable\",\r","    \"Luminance\",\r","    \"BWMode\",\r","    \"Gamma\",\r","    \"DeFlicker\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}},{"listen":"test","script":{"id":"9457f6be-7ea4-4604-a78e-9ee1d037d7dd","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"Hardware\")","","// Start of API tests","jsonSchemaVerification.validateJsonSchema(response, schema)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {","    testResorces.betweenTwoNumbers(responseJson, \"Sharpness\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"TWODNR\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"ThreeDNR\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"Saturation\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"Hue\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"Contrast\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"Brightness\", 0, 100)","    testResorces.shouldBeOneOf(responseJson, \"Flip\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Mirror\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"BackLightCom\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"WDREnable\", [\"On\", \"Off\", \"None\"])","    testResorces.shouldBeOneOf(responseJson, \"HighlightComp\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Gamma\", [\"default\", \"0.45\", \"0.50\", \"0.55\", \"0.63\"])","    testResorces.shouldBeOneOf(responseJson, \"DeFlicker\", [\"default\", \"50Hz\", \"60Hz\"])","}","","if (HardwareVersion === 'BirdDog X5 Ultra') {","    testResorces.betweenTwoNumbers(responseJson, \"ThreeDNR\", 0, 3)","    testResorces.shouldBeOneOf(responseJson, \"Flip\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Mirror\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"Stablizer\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"Saturation\", 0, 10)","    testResorces.betweenTwoNumbers(responseJson, \"Contrast\", 0, 4)","    testResorces.betweenTwoNumbers(responseJson, \"Sharpness\", 0, 3)","    testResorces.betweenTwoNumbers(responseJson, \"Hue\", 1, 15)","}","","if (HardwareVersion === 'BirdDog X4 Ultra') {","    testResorces.betweenTwoNumbers(responseJson, \"Saturation\", 0, 14)","    testResorces.shouldBeOneOf(responseJson, \"Flip\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"Hue\", 0, 100)","    testResorces.shouldBeOneOf(responseJson, \"Mirror\", [\"On\", \"Off\"])","    // testResorces.betweenTwoNumbers(responseJson, \"TwoDNR\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"ThreeDNR\", 0, 9)","    testResorces.betweenTwoNumbers(responseJson, \"Contrast\", 0, 14)","    testResorces.shouldBeOneOf(responseJson, \"Gamma\", [\"default\", \"0.45\", \"0.48\", \"0.50\", \"0.56\", \"PC\"])","    testResorces.betweenTwoNumbers(responseJson, \"Sharpness\", 0, 11)","    testResorces.betweenTwoNumbers(responseJson, \"Brightness\", 0, 14)","    testResorces.shouldBeOneOf(responseJson, \"BackLightCom\", [\"On\", \"Off\"])","    testResorces.betweenTwoNumbers(responseJson, \"WideDynamicRange\", 0, 10)","    testResorces.shouldBeOneOf(responseJson, \"HighlightComp\", [\"On\", \"Off\"])","    testResorces.shouldBeOneOf(responseJson, \"DeFlicker\", [\"default\", \"50Hz\", \"60Hz\"])","    testResorces.shouldBeOneOf(responseJson, \"BWMode\", [\"On\", \"Off\"])","}",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}}],"id":"d318e7a0-8021-4bb4-99df-6d6928807684","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"Saturation\": \"4\",\r\n    \"Flip\": \"Off\",\r\n    \"Hue\": \"7\",\r\n    \"Mirror\": \"Off\",\r\n    \"TwoDNR\": \"0\",\r\n    \"ThreeDNR\": \"6\",\r\n    \"Contrast\": \"7\",\r\n    \"Gamma\": \"default\",\r\n    \"Sharpness\": \"6\",\r\n    \"WideDynamicRange\": \"3\",\r\n    \"BackLightCom\": \"Off\",\r\n    \"Brightness\": \"7\",\r\n    \"DeFlicker\": \"default\",\r\n    \"BWMode\": \"Off\",\r\n    \"WDREnable\": \"Off\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogpicsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogpicsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"0896fb80-40c2-4912-aa82-f2808cc2a218","name":"X1 Ultra","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"Flip\": \"On\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogpicsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:18:58 GMT"},{"key":"Content-Length","value":"305"}],"cookie":[],"responseTime":null,"body":"{\n    \"Flip\": \"On\",\n    \"Mirror\": \"Off\",\n    \"Effect\": \"Off\",\n    \"WDREnable\": \"Off\",\n    \"WideDynamicRange\": \"0\",\n    \"Gamma\": \"default\",\n    \"BackLightCom\": \"Off\",\n    \"DeFlicker\": \"50Hz\",\n    \"HighlightComp\": \"Off\",\n    \"Portrait\": \"Off\",\n    \"Brightness\": \"50\",\n    \"Color\": \"50\",\n    \"Saturation\": \"50\",\n    \"Hue\": \"50\",\n    \"Contrast\": \"50\",\n    \"Sharpness\": \"50\",\n    \"TWODNR\": \"30\",\n    \"ThreeDNR\": \"30\"\n}"}],"_postman_id":"d318e7a0-8021-4bb4-99df-6d6928807684"}],"id":"ee13c6e3-238e-47a5-b0e0-017fe2d5f050","description":"<p>GET - Retrieve BirdDog Picture Setup Settings.</p>\n<p>POST - Set Picture Settings.</p>\n<p>Return contains:</p>\n<p><strong>X1, X1 Ultra &amp; MAX:</strong></p>\n<ul>\n<li><p>\"Sharpness\" → Range 0 to 99</p>\n</li>\n<li><p>\"TWODNR\" → Range 0 to 99</p>\n</li>\n<li><p>\"ThreeDNR\" → Range 0 to 99</p>\n</li>\n<li><p>\"Flip\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"Mirror\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"BackLightCom\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"WDREnable\" → \"On\", \"Off\" (X1 Only) (X1 Ultra &amp; MAX return \"Off\")</p>\n</li>\n<li><p>\"Saturation\" → Range 0 to 99</p>\n</li>\n<li><p>\"Hue\" → Range 0 to 99</p>\n</li>\n<li><p>\"HighlightComp\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"Contrast\" → Range 0 to 99</p>\n</li>\n<li><p>\"Brightness\" → Range 0 to 99</p>\n</li>\n<li><p>\"Gamma\" → \"default\", \"0.45\", \"0.50\", \"0.55\", \"0.63\"</p>\n</li>\n<li><p>\"DeFlicker\" → \"Off\", \"50Hz\", \"60Hz\"</p>\n</li>\n</ul>\n<p><strong>X5 Ultra:</strong></p>\n<ul>\n<li><p>\"Contrast\" → Range 0 to 4</p>\n</li>\n<li><p>\"Flip\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"Hue\" → Range 0 to 15</p>\n</li>\n<li><p>\"Mirror\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"Sharpness\" → Range 0 to 3</p>\n</li>\n<li><p>\"Saturation\" → Range 0 to 10</p>\n</li>\n<li><p>\"Stablizer\" → \"On\", \"Off\" (NOTE: When the Stabilizer feature is turned on/off, the camera will automatically reboot.)</p>\n</li>\n<li><p>\"ThreeDNR\" → Range 0 to 3 (0 = Off)</p>\n</li>\n<li><p>\"WDREnable\" → \"On\", \"Off\"</p>\n</li>\n</ul>\n<p>X4 Ultra:</p>\n<ul>\n<li><p>\"Saturation\" → Range 0 to 14 (0 = 60%, 1 = 70%, 2 = 80% ... 14 = 200%)</p>\n</li>\n<li><p>\"Flip\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"Hue\" → Range 0 to 14</p>\n</li>\n<li><p>\"Mirror\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"ThreeDNR\" → Range 0 to 9</p>\n</li>\n<li><p>\"Contrast\" → Range 0 to 14</p>\n</li>\n<li><p>\"Gamma\" → \"default\", \"0.45\", \"0.48\", \"0.50\", \"0.56\", \"PC\"</p>\n</li>\n<li><p>\"Sharpness\" → Range 0 to 11</p>\n</li>\n<li><p>\"Brightness\" → Range 0 to 14</p>\n</li>\n<li><p>\"BackLightCom\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"HighlightComp\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"DeFlicker\" → \"Off\", \"50Hz\", \"60Hz\"</p>\n</li>\n<li><p>\"BWMode\" → \"On\", \"Off\"</p>\n</li>\n</ul>\n","_postman_id":"ee13c6e3-238e-47a5-b0e0-017fe2d5f050"},{"name":"Advanced Setup","item":[{"name":"birddogadvancesetup","event":[{"listen":"test","script":{"id":"c3d996b9-f407-4b02-97a0-e8b4a07493e1","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"Hardware\")\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","pm.test(\"Response DOESN'T have unused keys\", function () {\r","    const responseData = pm.response.json();\r","    pm.expect(responseData).to.not.include.all.keys(\r","        \"HotPixel\", \"NearLimit\",\r","        \"DigitalZoom\", \"SmartFocus\"\r","    );\r","});\r","\r","testResorces.shouldBeOneOf(responseJson, \"AFMode\", [\"Manual\", \"Auto\", \"MANUAL\", \"AUTO\"])\r","testResorces.shouldBeOneOf(responseJson, \"AFSensitivity\", [\"High\", \"Middle\", \"Low\"])\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {\r","    testResorces.shouldBeOneOf(responseJson, \"Scene\", [\"Normal\", \"Macro\", \"Live\"])\r","    testResorces.shouldBeOneOf(responseJson, \"AFZone\", [\"Top\", \"Center\", \"Bottom\", \"ALL\", \"Left\", \"Right\"])\r","}\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    testResorces.shouldBeOneOf(responseJson, \"Scene\", [\"Default\", \"Normal\", \"Bright\", \"PC\"])\r","    testResorces.shouldBeOneOf(responseJson, \"AFZone\", [\"Top\", \"Center\", \"Bottom\", \"All\"])\r","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"ff1e4bd1-f97b-4782-93f6-303a7d32b323","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra'){\r","    pm.environment.set(\"skipTests\", true)\r","}\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {\r","    var schema = {\r","        \"type\": \"object\",\r","        \"properties\": {\r","            \"AFMode\": {\r","              \"type\": \"string\"\r","            },\r","            \"Scene\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFZone\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFSensitivity\": {\r","              \"type\": \"string\"\r","            }\r","          },\r","          \"required\": [\r","            \"AFMode\",\r","            \"Scene\",\r","            \"AFZone\",\r","            \"AFSensitivity\"\r","          ]\r","        }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra') {\r","    var schema = {\r","          \"type\": \"object\",\r","          \"properties\": {\r","            \"Scene\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFMode\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFZone\": {\r","              \"type\": \"string\"\r","            },\r","            \"NearLimit\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFSensitivity\": {\r","              \"type\": \"string\"\r","            },\r","            \"DigitalZoom\": {\r","              \"type\": \"string\"\r","            }\r","          },\r","          \"required\": [\r","            \"Scene\",\r","            \"AFMode\",\r","            \"AFZone\",\r","            \"NearLimit\",\r","            \"AFSensitivity\",\r","            \"DigitalZoom\"\r","          ]\r","        }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"1a9d1c57-4f44-4c3e-9127-c70cec0ff06a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogadvancesetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogadvancesetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"c4715a5c-7019-4561-a952-ee633192aa06","name":"X1 & X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogadvancesetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 19:08:50 GMT","enabled":true},{"key":"Content-Length","value":"75","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"AFMode\": \"Auto\",\n    \"Scene\": \"Normal\",\n    \"AFZone\": \"ALL\",\n    \"AFSensitivity\": \"Middle\"\n}"}],"_postman_id":"1a9d1c57-4f44-4c3e-9127-c70cec0ff06a"},{"name":"birddogadvancesetup","event":[{"listen":"test","script":{"id":"c3d996b9-f407-4b02-97a0-e8b4a07493e1","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"Hardware\")\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","pm.test(\"Response DOESN'T have unused keys\", function () {\r","    const responseData = pm.response.json();\r","    pm.expect(responseData).to.not.include.all.keys(\r","        \"HotPixel\", \"NearLimit\",\r","        \"DigitalZoom\", \"SmartFocus\"\r","    );\r","});\r","\r","testResorces.shouldBeOneOf(responseJson, \"AFMode\", [\"Manual\", \"Auto\", \"MANUAL\", \"AUTO\"])\r","testResorces.shouldBeOneOf(responseJson, \"AFSensitivity\", [\"High\", \"Middle\", \"Low\"])\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {\r","    testResorces.shouldBeOneOf(responseJson, \"Scene\", [\"Normal\", \"Macro\", \"Live\"])\r","    testResorces.shouldBeOneOf(responseJson, \"AFZone\", [\"Top\", \"Center\", \"Bottom\", \"ALL\", \"Left\", \"Right\"])\r","}\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    testResorces.shouldBeOneOf(responseJson, \"Scene\", [\"Default\", \"Normal\", \"Bright\", \"PC\"])\r","    testResorces.shouldBeOneOf(responseJson, \"AFZone\", [\"Top\", \"Center\", \"Bottom\", \"All\"])\r","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"14a16ae2-fa3b-4f3b-ba2f-9ce4f5aa79de","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra'){\r","    pm.environment.set(\"skipTests\", true)\r","}\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {\r","    var schema = {\r","        \"type\": \"object\",\r","        \"properties\": {\r","            \"AFMode\": {\r","              \"type\": \"string\"\r","            },\r","            \"Scene\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFZone\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFSensitivity\": {\r","              \"type\": \"string\"\r","            }\r","          },\r","          \"required\": [\r","            \"AFMode\",\r","            \"Scene\",\r","            \"AFZone\",\r","            \"AFSensitivity\"\r","          ]\r","        }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra') {\r","    var schema = {\r","          \"type\": \"object\",\r","          \"properties\": {\r","            \"Scene\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFMode\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFZone\": {\r","              \"type\": \"string\"\r","            },\r","            \"NearLimit\": {\r","              \"type\": \"string\"\r","            },\r","            \"AFSensitivity\": {\r","              \"type\": \"string\"\r","            },\r","            \"DigitalZoom\": {\r","              \"type\": \"string\"\r","            }\r","          },\r","          \"required\": [\r","            \"Scene\",\r","            \"AFMode\",\r","            \"AFZone\",\r","            \"NearLimit\",\r","            \"AFSensitivity\",\r","            \"DigitalZoom\"\r","          ]\r","        }\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"ce1b32f2-bcca-4120-b4ce-298ac7c18696","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"AFZone\": \"ALL\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogadvancesetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogadvancesetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"2fa60d30-30c5-4de4-89fd-3644bf0c8c67","name":"X1 & X1 Ultra","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"AFZone\": \"ALL\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogadvancesetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"application/json","enabled":true},{"key":"Date","value":"Thu, 03 Oct 2024 19:09:20 GMT","enabled":true},{"key":"Content-Length","value":"75","enabled":true}],"cookie":[],"responseTime":null,"body":"{\n    \"AFMode\": \"Auto\",\n    \"Scene\": \"Normal\",\n    \"AFZone\": \"ALL\",\n    \"AFSensitivity\": \"Middle\"\n}"}],"_postman_id":"ce1b32f2-bcca-4120-b4ce-298ac7c18696"}],"id":"375e02c0-1ea9-42e1-a5bf-897a6ef499a3","description":"<p>GET - Retrieve Advanced Settings.</p>\n<p>POST - Set Advanced Settings.</p>\n<p>Response includes:</p>\n<p><strong>X1, X1 Ultra &amp; MAX:</strong></p>\n<ul>\n<li><p>\"AFZone\" → \"Top\", \"Center\", \"Bottom\", \"ALL\", \"Left\", \"Right\"</p>\n</li>\n<li><p>\"Scene\" → \"Normal\", \"Macro\", \"Live\"</p>\n</li>\n<li><p>\"AFSensitivity\" → \"High\", \"Middle\", \"Low\"</p>\n</li>\n</ul>\n<p><strong>X4 Ultra:</strong></p>\n<ul>\n<li><p>\"AFZone\" → \"Top\", \"Center\", \"Bottom\", \"ALL\", \"default\"</p>\n</li>\n<li><p>\"Scene\" → \"Default\", \"Normal\", \"Bright\", \"PC\"</p>\n</li>\n<li><p>\"AFSensitivity\" → \"High\", \"Middle\", \"Low\"</p>\n</li>\n<li><p>\"AFMode\": \"MANUAL\", \"AUTO\"</p>\n</li>\n</ul>\n<p><strong>Not Supported for X5</strong></p>\n","_postman_id":"375e02c0-1ea9-42e1-a5bf-897a6ef499a3"},{"name":"White Balance Setup","item":[{"name":"birddogwbsetup","event":[{"listen":"test","script":{"id":"9658628b-80a8-4b6f-b506-65c11e913e1b","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"Hardware\")","","// Start of API tests","jsonSchemaVerification.validateJsonSchema(response, schema)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {","    testResorces.shouldBeOneOf(responseJson, \"WbMode\", [\"AUTO\", \"INDOOR\", \"OUTDOOR\", \"ONEPUSH\", \"ColorTemp\", \"MANUAL\"])","    testResorces.betweenTwoNumbers(responseJson, \"RedGain\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"BlueGain\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"ColorTemp\", 2500, 9000)","}","","if (HardwareVersion === 'BirdDog X4 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"WbMode\", [\"AUTO\", \"INDOOR\", \"OUTDOOR\", \"ONEPUSH\", \"ColorTemp\", \"MANUAL\"])","    testResorces.betweenTwoNumbers(responseJson, \"RTuning\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"BTuning\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"ColorTemp\", 2500, 9000)","    testResorces.betweenTwoNumbers(responseJson, \"RedGain\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"BlueGain\", 0, 255)","}","","if (HardwareVersion === 'BirdDog X5 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"WbMode\", [\"AUTO\", \"INDOOR\", \"OUTDOOR\", \"ONEPUSH\", \"ATW\", \"USER\"])","    testResorces.betweenTwoNumbers(responseJson, \"RedGain\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"BlueGain\", 0, 255)","}",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"29dfd46d-c1bf-4cf7-b7d5-4ee40eaff19f","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"WbMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"RedGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"BlueGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"ColorTemp\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"WbMode\",\r","    \"RedGain\",\r","    \"BlueGain\",\r","    \"ColorTemp\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"WbMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"RTuning\": {\r","      \"type\": \"string\"\r","    },\r","    \"BTuning\": {\r","      \"type\": \"string\"\r","    },\r","    \"RedGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"BlueGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"ColorTemp\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"WbMode\",\r","    \"RTuning\",\r","    \"BTuning\",\r","    \"RedGain\",\r","    \"BlueGain\",\r","    \"ColorTemp\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"WbMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"RedGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"BlueGain\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"WbMode\",\r","    \"RedGain\",\r","    \"BlueGain\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"4e7975fb-e135-476a-afe4-a8ef9666ef78","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogwbsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogwbsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"71fb14ce-3bfb-49ea-9c1a-3c2a5c414fe7","name":"X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogwbsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:19:43 GMT"},{"key":"Content-Length","value":"164"}],"cookie":[],"responseTime":null,"body":"{\n    \"WbMode\": \"AUTO\",\n    \"OnePushTrigger\": \"None\",\n    \"RedGain\": \"128\",\n    \"BlueGain\": \"128\",\n    \"WBSensitivity\": \"Middle\",\n    \"ColorTemp\": \"5600\",\n    \"GTuning\": \"50\",\n    \"RTuning\": \"50\",\n    \"BTuning\": \"50\"\n}"},{"id":"b1555c55-2b72-4627-b4cb-17de1e0b78eb","name":"X5 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogwbsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Date","value":"Fri, 23 May 2025 01:55:53 GMT"},{"key":"Content-Length","value":"51"}],"cookie":[],"responseTime":null,"body":"{\n    \"BlueGain\": \"66\",\n    \"RedGain\": \"74\",\n    \"WbMode\": \"OUTDOOR\"\n}"}],"_postman_id":"4e7975fb-e135-476a-afe4-a8ef9666ef78"},{"name":"birddogwbsetup","event":[{"listen":"test","script":{"id":"9658628b-80a8-4b6f-b506-65c11e913e1b","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"HardwareVersion\")","","// Start of API tests","jsonSchemaVerification.validateJsonSchema(response, schema)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {","    testResorces.shouldBeOneOf(responseJson, \"WbMode\", [\"AUTO\", \"INDOOR\", \"OUTDOOR\", \"ONEPUSH\", \"ColorTemp\", \"MANUAL\"])","    testResorces.betweenTwoNumbers(responseJson, \"RedGain\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"BlueGain\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"ColorTemp\", 2500, 9000)","}","","if (HardwareVersion === 'BirdDog X4 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"WbMode\", [\"AUTO\", \"INDOOR\", \"OUTDOOR\", \"ONEPUSH\", \"ColorTemp\", \"MANUAL\"])","    testResorces.betweenTwoNumbers(responseJson, \"RTuning\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"BTuning\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"ColorTemp\", 2500, 9000)","    testResorces.betweenTwoNumbers(responseJson, \"RedGain\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"BlueGain\", 0, 255)","}","","if (HardwareVersion === 'BirdDog X5 Ultra') {","    testResorces.shouldBeOneOf(responseJson, \"WbMode\", [\"AUTO\", \"INDOOR\", \"OUTDOOR\", \"ONEPUSH\", \"ATW\", \"USER\"])","    testResorces.betweenTwoNumbers(responseJson, \"RedGain\", 0, 255)","    testResorces.betweenTwoNumbers(responseJson, \"BlueGain\", 0, 255)","}",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"3ed54d25-501a-4b99-b011-395d04ed6388","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"WbMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"RedGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"BlueGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"ColorTemp\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"WbMode\",\r","    \"RedGain\",\r","    \"BlueGain\",\r","    \"ColorTemp\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"WbMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"RTuning\": {\r","      \"type\": \"string\"\r","    },\r","    \"BTuning\": {\r","      \"type\": \"string\"\r","    },\r","    \"RedGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"BlueGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"ColorTemp\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"WbMode\",\r","    \"RTuning\",\r","    \"BTuning\",\r","    \"RedGain\",\r","    \"BlueGain\",\r","    \"ColorTemp\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"WbMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"RedGain\": {\r","      \"type\": \"string\"\r","    },\r","    \"BlueGain\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"WbMode\",\r","    \"RedGain\",\r","    \"BlueGain\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"c7f0645c-23a5-4f0c-81d1-8f8f5cc62880","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"RedGain\": \"111\",\r\n    \"BlueGain\": \"111\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogwbsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogwbsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"9eb257c6-1ce3-40b8-a5d1-82ffa0c87609","name":"X1 Ultra","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"WbMode\": \"AUTO\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogwbsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:19:56 GMT"},{"key":"Content-Length","value":"164"}],"cookie":[],"responseTime":null,"body":"{\n    \"WbMode\": \"AUTO\",\n    \"OnePushTrigger\": \"None\",\n    \"RedGain\": \"128\",\n    \"BlueGain\": \"128\",\n    \"WBSensitivity\": \"Middle\",\n    \"ColorTemp\": \"5600\",\n    \"GTuning\": \"50\",\n    \"RTuning\": \"50\",\n    \"BTuning\": \"50\"\n}"},{"id":"7298b700-5f32-4157-9aa4-25d2efd1630f","name":"OnePushTrigger = Take","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"OnePushTrigger\": \"Take\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogwbsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Mon, 26 May 2025 12:53:41 GMT"},{"key":"Content-Length","value":"97"}],"cookie":[],"responseTime":null,"body":"{\n    \"WbMode\": \"ONEPUSH\",\n    \"OnePushTrigger\": \"Take\",\n    \"RedGain\": \"128\",\n    \"BlueGain\": \"128\",\n    \"ColorTemp\": \"5600\"\n}"}],"_postman_id":"c7f0645c-23a5-4f0c-81d1-8f8f5cc62880"}],"id":"0622a2a2-0afb-473b-9a6c-544e71f39124","description":"<p>GET - Retrieve White Balance Settings.</p>\n<p>POST - Set White Balance Settings.</p>\n<p>Response contains:</p>\n<p><strong>X1, X1 Ultra &amp; MAX:</strong></p>\n<ul>\n<li><p>\"WbMode\" → White balance mode - \"AUTO\", \"INDOOR\", \"OUTDOOR\", \"ONEPUSH\", \"ColorTemp\", \"MANUAL\"</p>\n</li>\n<li><p>\"RedGain\" → Range 0 to 255</p>\n</li>\n<li><p>\"BlueGain\" → Range 0 to 255</p>\n</li>\n<li><p>\"ColorTemp\" → Range 2500 to 9000</p>\n</li>\n<li><p>\"OnePushTrigger\" → \"Take\"</p>\n<ul>\n<li>POST ONLY - will set the One Push white balance</li>\n</ul>\n</li>\n</ul>\n<p><strong>X4 Ultra:</strong></p>\n<ul>\n<li><p>\"WbMode\" → White balance mode - \"AUTO\", \"INDOOR\", \"OUTDOOR\", \"ONEPUSH\", \"ColorTemp\", \"MANUAL\"</p>\n</li>\n<li><p><b>AUTO:</b></p>\n<ul>\n<li><p>\"RTuning\" → Range -10 to 10</p>\n</li>\n<li><p>\"BTuning\" → Range -10 to 10</p>\n</li>\n</ul>\n</li>\n<li><p><b>MANUAL:</b></p>\n<ul>\n<li><p>\"RedGain\" → Range 0 to 255</p>\n</li>\n<li><p>\"BlueGain\" → Range 0 to 255</p>\n</li>\n</ul>\n</li>\n<li><p><b>ColorTemp:</b></p>\n<ul>\n<li>\"ColorTemp\" → Range 2500 to 9000</li>\n</ul>\n</li>\n<li><p>\"OnePushTrigger\" → \"Take\"</p>\n<ul>\n<li>POST will set the One Push white balance</li>\n</ul>\n</li>\n</ul>\n<p><strong>X5 Ultra:</strong></p>\n<ul>\n<li><p>\"WbMode\" → \"AUTO\", \"INDOOR\", \"OUTDOOR\", \"ONEPUSH\", \"ATW\", \"USER\"</p>\n<ul>\n<li><p>\"RedGain\" → Range 0 to 255</p>\n</li>\n<li><p>\"BlueGain\" → Range 0 to 255</p>\n</li>\n<li><p>White balance must be to user to adjust red &amp; blue gain</p>\n</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"0622a2a2-0afb-473b-9a6c-544e71f39124"},{"name":"PTZ Setup","item":[{"name":"birddogptzsetup","event":[{"listen":"test","script":{"id":"bad8e317-30dc-4cae-9803-31ec9ef2f0d8","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"Hardware\")","","// Start of API tests","jsonSchemaVerification.validateJsonSchema(response, schema)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {","    var PanSpeedHigh = 24","    var TiltSpeedHigh = 20","    // Need to adjuct the high values of Pan and Tilt Speed if the SpeedControl is set to superfine","    if (responseJson[\"SpeedControl\"] === \"superfine\") {","        PanSpeedHigh = 255","        TiltSpeedHigh = 255","    }","","    testResorces.betweenTwoNumbers(responseJson, \"PanSpeed\", 0, PanSpeedHigh)","    testResorces.betweenTwoNumbers(responseJson, \"TiltSpeed\", 0, TiltSpeedHigh)","    testResorces.betweenTwoNumbers(responseJson, \"ZoomSpeed\", 0, 7)","    testResorces.betweenTwoNumbers(responseJson, \"PresetSpeed\", 5, 200)","    testResorces.shouldBeOneOf(responseJson, \"Preset\", [\"PTZonly\", \"Birddog\", \"Camera\"])","    testResorces.shouldBeOneOf(responseJson, \"FocusMode\", [\"AUTO\", \"MANUAL\"])","    testResorces.shouldBeOneOf(responseJson, \"SpeedControl\", [\"standard\", \"superfine\"])","}","","if (HardwareVersion === 'BirdDog X5 Ultra') {","    testResorces.betweenTwoNumbers(responseJson, \"PanSpeed\", 1, 100)","    testResorces.betweenTwoNumbers(responseJson, \"TiltSpeed\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"ZoomSpeed\", 1, 7)","    testResorces.shouldBeOneOf(responseJson, \"PresetSpeed\", [\"5\", \"25\", \"50\", \"100\", \"150\", \"200\"])","    testResorces.shouldBeOneOf(responseJson, \"Preset\", [\"PTZonly\", \"Camera\"])","    testResorces.shouldBeOneOf(responseJson, \"FocusMode\", [\"AUTO\", \"MANUAL\"])","    testResorces.shouldBeOneOf(responseJson, \"PanTiltSlow\", [\"On\", \"Off\"])","}","","if (HardwareVersion === 'BirdDog X4 Ultra') {","    var PanSpeedHigh = 24","    var TiltSpeedHigh = 20","    // Need to adjuct the high values of Pan and Tilt Speed if the SpeedControl is set to superfine","    if (responseJson[\"SpeedControl\"] === \"superfine\") {","        PanSpeedHigh = 255","        TiltSpeedHigh = 255","    }","","    testResorces.shouldBeOneOf(responseJson, \"FocusMode\", [\"AUTO\", \"MANUAL\"])","    testResorces.betweenTwoNumbers(responseJson, \"PanSpeed\", 1, PanSpeedHigh)","    testResorces.betweenTwoNumbers(responseJson, \"TiltSpeed\", 0, TiltSpeedHigh)","    testResorces.betweenTwoNumbers(responseJson, \"ZoomSpeed\", 1, 7)","    testResorces.shouldBeOneOf(responseJson, \"PresetSpeed\", [\"5\", \"25\", \"50\", \"100\", \"150\", \"200\"])","    testResorces.shouldBeOneOf(responseJson, \"Preset\", [\"PTZonly\", \"Camera\"])","    testResorces.shouldBeOneOf(responseJson, \"SpeedControl\", [\"standard\", \"superfine\"])","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"ed00ea40-d3df-41ec-a702-36433c07ed58","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"PanSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"TiltSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"ZoomSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"FocusMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"PanTiltSlow \": {\r","      \"type\": \"string\"\r","    },\r","    \"Preset\": {\r","      \"type\": \"string\"\r","    },\r","    \"PresetSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"SpeedControl\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"PanSpeed\",\r","    \"TiltSpeed\",\r","    \"ZoomSpeed\",\r","    \"FocusMode\",\r","    \"Preset\",\r","    \"SpeedControl\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"PanSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"TiltSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"ZoomSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"FocusMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"PanTiltSlow\": {\r","      \"type\": \"string\"\r","    },\r","    \"Preset\": {\r","      \"type\": \"string\"\r","    },\r","    \"PresetSpeed\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"PanSpeed\",\r","    \"TiltSpeed\",\r","    \"ZoomSpeed\",\r","    \"FocusMode\",\r","    \"PanTiltSlow\",\r","    \"Preset\",\r","    \"PresetSpeed\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersion === \"BirdDog X4 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"PanSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"TiltSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"ZoomSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"FocusMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"Preset\": {\r","      \"type\": \"string\"\r","    },\r","    \"PresetSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"SpeedControl\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"PanSpeed\",\r","    \"TiltSpeed\",\r","    \"ZoomSpeed\",\r","    \"FocusMode\",\r","    \"Preset\",\r","    \"PresetSpeed\",\r","    \"SpeedControl\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"f7f06e6a-f495-40f9-aa27-a5de4e1eaa65","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogptzsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogptzsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"865c8c82-8e90-4f8a-a6ec-b9495d448cc0","name":"X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/birddogptzsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:20:43 GMT"},{"key":"Content-Length","value":"195"}],"cookie":[],"responseTime":null,"body":"{\n    \"FocusMode\": \"AUTO\",\n    \"Freed\": \"Off\",\n    \"FreedIpAddr\": \"192.168.2.100\",\n    \"FreedPort\": \"5555\",\n    \"PanSpeed\": \"24\",\n    \"Preset\": \"Camera\",\n    \"PresetSpeed\": \"14\",\n    \"SpeedControl\": \"standard\",\n    \"TiltSpeed\": \"20\",\n    \"ZoomSpeed\": \"7\"\n}"}],"_postman_id":"f7f06e6a-f495-40f9-aa27-a5de4e1eaa65"},{"name":"birddogptzsetup","event":[{"listen":"test","script":{"id":"bad8e317-30dc-4cae-9803-31ec9ef2f0d8","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');","const testResorces = pm.require('@birddog-api-yaml/test_resourses');","const response = pm.response;","const responseJson = pm.response.json();","const header = \"application/json\"","","// Get the values from the pre-request script","var schema = pm.environment.get(\"schema\");","var HardwareVersion = pm.environment.get(\"Hardware\")","","// Start of API tests","jsonSchemaVerification.validateJsonSchema(response, schema)","jsonRestResponses.validateStatusCode(response, 200)","jsonRestResponses.validateHeader(response, header)","","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX') {","    var PanSpeedHigh = 24","    var TiltSpeedHigh = 20","    // Need to adjuct the high values of Pan and Tilt Speed if the SpeedControl is set to superfine","    if (responseJson[\"SpeedControl\"] === \"superfine\") {","        PanSpeedHigh = 255","        TiltSpeedHigh = 255","    }","","    testResorces.betweenTwoNumbers(responseJson, \"PanSpeed\", 0, PanSpeedHigh)","    testResorces.betweenTwoNumbers(responseJson, \"TiltSpeed\", 0, TiltSpeedHigh)","    testResorces.betweenTwoNumbers(responseJson, \"ZoomSpeed\", 0, 7)","    testResorces.betweenTwoNumbers(responseJson, \"PresetSpeed\", 5, 200)","    testResorces.shouldBeOneOf(responseJson, \"Preset\", [\"PTZonly\", \"Birddog\", \"Camera\"])","    testResorces.shouldBeOneOf(responseJson, \"FocusMode\", [\"AUTO\", \"MANUAL\"])","    testResorces.shouldBeOneOf(responseJson, \"SpeedControl\", [\"standard\", \"superfine\"])","}","","if (HardwareVersion === 'BirdDog X5 Ultra') {","    testResorces.betweenTwoNumbers(responseJson, \"PanSpeed\", 1, 100)","    testResorces.betweenTwoNumbers(responseJson, \"TiltSpeed\", 0, 100)","    testResorces.betweenTwoNumbers(responseJson, \"ZoomSpeed\", 1, 7)","    testResorces.shouldBeOneOf(responseJson, \"PresetSpeed\", [\"5\", \"25\", \"50\", \"100\", \"150\", \"200\"])","    testResorces.shouldBeOneOf(responseJson, \"Preset\", [\"PTZonly\", \"Camera\"])","    testResorces.shouldBeOneOf(responseJson, \"FocusMode\", [\"AUTO\", \"MANUAL\"])","    testResorces.shouldBeOneOf(responseJson, \"PanTiltSlow\", [\"On\", \"Off\"])","}","","if (HardwareVersion === 'BirdDog X4 Ultra') {","    var PanSpeedHigh = 24","    var TiltSpeedHigh = 20","    // Need to adjuct the high values of Pan and Tilt Speed if the SpeedControl is set to superfine","    if (responseJson[\"SpeedControl\"] === \"superfine\") {","        PanSpeedHigh = 255","        TiltSpeedHigh = 255","    }","","    testResorces.shouldBeOneOf(responseJson, \"FocusMode\", [\"AUTO\", \"MANUAL\"])","    testResorces.betweenTwoNumbers(responseJson, \"PanSpeed\", 1, PanSpeedHigh)","    testResorces.betweenTwoNumbers(responseJson, \"TiltSpeed\", 0, TiltSpeedHigh)","    testResorces.betweenTwoNumbers(responseJson, \"ZoomSpeed\", 1, 7)","    testResorces.shouldBeOneOf(responseJson, \"PresetSpeed\", [\"5\", \"25\", \"50\", \"100\", \"150\", \"200\"])","    testResorces.shouldBeOneOf(responseJson, \"Preset\", [\"PTZonly\", \"Camera\"])","    testResorces.shouldBeOneOf(responseJson, \"SpeedControl\", [\"standard\", \"superfine\"])","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"1938ab51-9b73-46cb-b185-d20b19110211","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/version\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Save the text in the response body into a variable\r","        var Version = response.text();\r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"Hardware\", Version);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"Hardware\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"PanSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"TiltSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"ZoomSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"FocusMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"PanTiltSlow \": {\r","      \"type\": \"string\"\r","    },\r","    \"Preset\": {\r","      \"type\": \"string\"\r","    },\r","    \"PresetSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"SpeedControl\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"PanSpeed\",\r","    \"TiltSpeed\",\r","    \"ZoomSpeed\",\r","    \"FocusMode\",\r","    \"Preset\",\r","    \"SpeedControl\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"PanSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"TiltSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"ZoomSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"FocusMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"PanTiltSlow\": {\r","      \"type\": \"string\"\r","    },\r","    \"Preset\": {\r","      \"type\": \"string\"\r","    },\r","    \"PresetSpeed\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"PanSpeed\",\r","    \"TiltSpeed\",\r","    \"ZoomSpeed\",\r","    \"FocusMode\",\r","    \"PanTiltSlow\",\r","    \"Preset\",\r","    \"PresetSpeed\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersion === \"BirdDog X4 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"PanSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"TiltSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"ZoomSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"FocusMode\": {\r","      \"type\": \"string\"\r","    },\r","    \"Preset\": {\r","      \"type\": \"string\"\r","    },\r","    \"PresetSpeed\": {\r","      \"type\": \"string\"\r","    },\r","    \"SpeedControl\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"PanSpeed\",\r","    \"TiltSpeed\",\r","    \"ZoomSpeed\",\r","    \"FocusMode\",\r","    \"Preset\",\r","    \"PresetSpeed\",\r","    \"SpeedControl\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"4b42e63f-a6b2-42f0-bfa0-02029ff9e8e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"PresetSpeed\": \"100\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogptzsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogptzsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"0e0d90f0-9501-448e-86db-628ba7db5844","name":"X1 Ultra","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"SpeedControl\": \"advanced\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogptzsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:20:57 GMT"},{"key":"Content-Length","value":"196"}],"cookie":[],"responseTime":null,"body":"{\n    \"FocusMode\": \"AUTO\",\n    \"Freed\": \"Off\",\n    \"FreedIpAddr\": \"192.168.2.100\",\n    \"FreedPort\": \"5555\",\n    \"PanSpeed\": \"24\",\n    \"Preset\": \"Camera\",\n    \"PresetSpeed\": \"14\",\n    \"SpeedControl\": \"superfine\",\n    \"TiltSpeed\": \"20\",\n    \"ZoomSpeed\": \"7\"\n}"}],"_postman_id":"4b42e63f-a6b2-42f0-bfa0-02029ff9e8e5"}],"id":"4d29a9db-fab0-4d7d-a2fb-59991397ebaf","description":"<p>GET - Retrieve PTZ Settings.</p>\n<p>POST - Set PTZ Settings.</p>\n<p>Response contains:</p>\n<p><strong>X1, X1 Ultra &amp; MAX:</strong></p>\n<ul>\n<li><p>\"PanSpeed\"</p>\n<ul>\n<li><p>When \"SpeedControl\" = \"standard\" → Range 1 to 24</p>\n</li>\n<li><p>When \"SpeedControl\" = \"superfine\" → Range 1 to 255</p>\n</li>\n</ul>\n</li>\n<li><p>\"TiltSpeed\"</p>\n<ul>\n<li><p>When \"SpeedControl\" = \"standard\" → Range 1 to 24</p>\n</li>\n<li><p>When \"SpeedControl\" = \"superfine\" → Range 1 to 255</p>\n</li>\n</ul>\n</li>\n<li><p>\"ZoomSpeed\" → Range 0 to 7</p>\n</li>\n<li><p>\"FocusMode\" → \"AUTO\" or \"MANUAL\"</p>\n</li>\n<li><p>\"Preset\" → \"PTZonly\" &amp; \"Birddog\" or \"Camera\"</p>\n</li>\n<li><p>\"PresetSpeed\" → Range 5 to 200</p>\n</li>\n<li><p>\"SpeedControl\" → \"standard\" or \"superfine\"</p>\n</li>\n</ul>\n<p><strong>X4 Ultra:</strong></p>\n<ul>\n<li><p>\"FocusMode\" → \"AUTO\", \"MANUAL\"</p>\n</li>\n<li><p>\"PanSpeed\" → Range 0 to 24</p>\n</li>\n<li><p>\"TiltSpeed\" → Range 0 to 20</p>\n</li>\n<li><p>\"ZoomSpeed\" → 0 to 7</p>\n</li>\n<li><p>\"PresetSpeed\" → Range to be definded</p>\n</li>\n<li><p>\"Preset\" → \"PTZonly\", \"Camera\"</p>\n</li>\n<li><p>\"SpeedControl\" → \"standard\" or \"superfine\"</p>\n</li>\n</ul>\n<p><strong>X5 Ultra:</strong></p>\n<ul>\n<li><p>\"PanSpeed\" → Range 0 to 100</p>\n</li>\n<li><p>\"TiltSpeed\" → Range 0 to 100</p>\n</li>\n<li><p>\"ZoomSpeed\" → Range 0 to 7</p>\n</li>\n<li><p>\"FocusMode\" → \"AUTO\" or \"MANUAL\"</p>\n</li>\n<li><p>\"Preset\" → \"PTZonly\", \"Camera\"</p>\n</li>\n<li><p>\"PresetSpeed\" → \"5\", \"25\", \"50\", \"100\", \"150\", \"200\"</p>\n</li>\n<li><p>\"PanTiltSlow\", → \"On\", \"Off\"</p>\n</li>\n</ul>\n","_postman_id":"4d29a9db-fab0-4d7d-a2fb-59991397ebaf"},{"name":"Colour Matrix Setup","item":[{"name":"birddogcmsetup","event":[{"listen":"test","script":{"id":"238a2a4d-2370-45c2-a77c-ea8818535c81","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","\r","var schema = {\r","    \"type\": \"object\",\r","      \"properties\": {\r","        \"RedHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"BlueHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"GreenHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"YellowHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"MagHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"CyanHue\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"RedHue\",\r","        \"BlueHue\",\r","        \"GreenHue\",\r","        \"YellowHue\",\r","        \"MagHue\",\r","        \"CyanHue\"\r","      ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.betweenTwoNumbers(responseJson, \"RedHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"BlueHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"GreenHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"YellowHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"MagHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"CyanHue\", 0, 100)\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"e365e043-03da-4fa6-bcda-f90c3755af57","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra'){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{}}}],"id":"85967494-b011-4b66-be22-bdd3bf625341","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/birddogcmsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogcmsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"d3c18362-9459-4193-92af-868fdbf664b5","name":"X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/birddogcmsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:21:50 GMT"},{"key":"Content-Length","value":"190"}],"cookie":[],"responseTime":null,"body":"{\n    \"RedHue\": \"50\",\n    \"BlueHue\": \"50\",\n    \"GreenHue\": \"50\",\n    \"YellowHue\": \"50\",\n    \"MagHue\": \"50\",\n    \"CyanHue\": \"50\",\n    \"RedGain\": \"NA\",\n    \"BlueGain\": \"NA\",\n    \"GreenGain\": \"NA\",\n    \"YellowGain\": \"NA\",\n    \"MagGain\": \"NA\",\n    \"CyanGain\": \"NA\"\n}"}],"_postman_id":"85967494-b011-4b66-be22-bdd3bf625341"},{"name":"birddogcmsetup","event":[{"listen":"test","script":{"id":"ba2d3a29-4e46-4716-aed9-c66b6140f49f","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","\r","var schema = {\r","    \"type\": \"object\",\r","      \"properties\": {\r","        \"RedHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"BlueHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"GreenHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"YellowHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"MagHue\": {\r","          \"type\": \"string\"\r","        },\r","        \"CyanHue\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"RedHue\",\r","        \"BlueHue\",\r","        \"GreenHue\",\r","        \"YellowHue\",\r","        \"MagHue\",\r","        \"CyanHue\"\r","      ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.betweenTwoNumbers(responseJson, \"RedHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"BlueHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"GreenHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"YellowHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"MagHue\", 0, 100)\r","testResorces.betweenTwoNumbers(responseJson, \"CyanHue\", 0, 100)\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"465a9c65-bc88-467f-85f1-ff5f8849a0a1","exec":["// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog X5 Ultra'){\r","    pm.environment.set(\"skipTests\", true)\r","}"],"type":"text/javascript","packages":{}}}],"id":"61b66a93-3729-4890-98a0-caeb5f9cc846","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"BlueHue\": \"35\",\r\n    \"RedHue\": \"35\",\r\n    \"GreenHue\": \"35\",\r\n    \"CyanHue\": \"35\",\r\n    \"MagHue\": \"35\",\r\n    \"YellowHue\": \"35\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogcmsetup","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["birddogcmsetup"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"5c1b80f7-fa14-4178-8ed6-484b26aec2ce","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"RedHue\": \"44\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogcmsetup"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:22:04 GMT"},{"key":"Content-Length","value":"190"}],"cookie":[],"responseTime":null,"body":"{\n    \"RedHue\": \"44\",\n    \"BlueHue\": \"50\",\n    \"GreenHue\": \"50\",\n    \"YellowHue\": \"50\",\n    \"MagHue\": \"50\",\n    \"CyanHue\": \"50\",\n    \"RedGain\": \"NA\",\n    \"BlueGain\": \"NA\",\n    \"GreenGain\": \"NA\",\n    \"YellowGain\": \"NA\",\n    \"MagGain\": \"NA\",\n    \"CyanGain\": \"NA\"\n}"}],"_postman_id":"61b66a93-3729-4890-98a0-caeb5f9cc846"}],"id":"1af60104-81d9-483b-8a78-b3a13b1e9562","description":"<p>GET - Retrieve Colour Matrix Settings.</p>\n<p>POST - Set Colour Matrix Settings.</p>\n<p>Response contains:</p>\n<p><strong>X1, X1 Ultra, MAX &amp; X4 Ultra:</strong></p>\n<ul>\n<li><p>\"BlueHue\" → Range 0 to 100</p>\n</li>\n<li><p>\"CyanHue\" → Range 0 to 100</p>\n</li>\n<li><p>\"GreenHue\" → Range 0 to 100</p>\n</li>\n<li><p>\"MagHue\" → Range 0 to 100</p>\n</li>\n<li><p>\"RedHue\" → Range 0 to 100</p>\n</li>\n<li><p>\"YellowHue\" → Range 0 to 100</p>\n</li>\n</ul>\n<p><strong>Not Supported for X5</strong></p>\n","_postman_id":"1af60104-81d9-483b-8a78-b3a13b1e9562"},{"name":"Presets","item":[{"name":"Save a Preset.","event":[{"listen":"test","script":{"id":"ad999efa-a8ac-4666-8b0c-4e2baf27f622","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","\r","var schema = {\r","    \"type\": \"object\",\r","      \"properties\": {\r","        \"Preset\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"Preset\"\r","      ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.isAlphanumricString(responseJson, \"Preset\")\r","\r","\r","// Get the request body\r","const requestBody = pm.request.body.raw;\r","// Parse the response body\r","const responseBody = pm.response.json();\r","// Assert that the response body matches the request body\r","pm.test(\"Response body matches request body\", function () {\r","    pm.expect(responseBody).to.eql(JSON.parse(requestBody));\r","});"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"7b346119-40a7-4502-b392-c686819301c1","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"5a234c60-2fe2-4109-87a3-b71f821e9462","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\"Preset\":\"Preset-9\"}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/save","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["save"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"485ac5ae-48b0-4e67-86f2-f5a5b305078c","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\"Preset\":\"Preset-1\"}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/save"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:22:21 GMT"},{"key":"Content-Length","value":"21"}],"cookie":[],"responseTime":null,"body":"{\n    \"Preset\": \"Preset-1\"\n}"}],"_postman_id":"5a234c60-2fe2-4109-87a3-b71f821e9462"},{"name":"Recall a Preset.","event":[{"listen":"test","script":{"id":"ccd0fdff-a399-4273-a5ea-58d87e6012bf","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","\r","var schema = {\r","    \"type\": \"object\",\r","      \"properties\": {\r","        \"Preset\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"Preset\"\r","      ]\r","};\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.isAlphanumricString(responseJson, \"Preset\")\r","\r","\r","// Get the request body\r","const requestBody = pm.request.body.raw;\r","// Parse the response body\r","const responseBody = pm.response.json();\r","// Assert that the response body matches the request body\r","pm.test(\"Response body matches request body\", function () {\r","    pm.expect(responseBody).to.eql(JSON.parse(requestBody));\r","});"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"4091daf6-30b2-4b31-8cec-e7938cc800e6","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"ad94782a-180e-4387-b90f-55aa7a187941","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\"Preset\":\"Preset-9\"}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/recall","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["recall"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"16792cf7-c668-4580-a11e-b64ee27d9e3d","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\"Preset\":\"Preset-1\"}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/recall"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:22:35 GMT"},{"key":"Content-Length","value":"21"}],"cookie":[],"responseTime":null,"body":"{\n    \"Preset\": \"Preset-1\"\n}"}],"_postman_id":"ad94782a-180e-4387-b90f-55aa7a187941"}],"id":"c30012dd-3a00-4601-91f4-9be70ebc18b5","description":"<p><strong>All X Series Cameras:</strong></p>\n<ul>\n<li><p>POST /save with {\"Preset\":\"Preset-1\"} in the body, see example, will save the preset to the preset position in the JSON</p>\n</li>\n<li><p>POST /recall with {\"Preset\":\"Preset-1\"} in the body, see example, will recall the preset at the position in the JSON</p>\n</li>\n</ul>\n<p>The return for both will be the same JSON that was in the body of the original API call</p>\n","_postman_id":"c30012dd-3a00-4601-91f4-9be70ebc18b5"},{"name":"PTZ Movement Controls","item":[{"name":"birddogptzcontrol","event":[{"listen":"test","script":{"id":"f7886f70-d2de-4cc1-b2f9-50a3eedb7d3d","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const header = \"application/json\"\r","\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","var schema = {\r","    \"type\": \"object\",\r","      \"properties\": {\r","        \"X-Axis\": {\r","          \"type\": \"string\"\r","        },\r","        \"Y-Axis\": {\r","          \"type\": \"string\"\r","        },\r","        \"Z-Axis\": {\r","          \"type\": \"string\"\r","        },\r","        \"Menu\": {\r","          \"type\": \"string\"\r","        }\r","      },\r","      \"required\": [\r","        \"X-Axis\",\r","        \"Y-Axis\",\r","        \"Z-Axis\",\r","        \"Menu\"\r","      ]\r","};\r","\r","\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.betweenTwoNumbers(responseJson, \"X-Axis\", -12992, 12208)\r","testResorces.betweenTwoNumbers(responseJson, \"Y-Axis\", -6860, 5620)\r","testResorces.betweenTwoNumbers(responseJson, \"Z-Axis\", 0x00, 0x4000)\r","testResorces.shouldBeOneOf(responseJson, \"Menu\", [\"On\", \"Off\"])"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"633c10cd-d76c-4256-a037-513ee63e41a5","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"a0f7b5e1-25bb-4a2d-bb4c-79f5dcf29d8f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/birddogptzcontrol","urlObject":{"port":"8080","path":["birddogptzcontrol"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"fb15d2bb-eed0-44b9-8c1a-40525441e1c3","name":"X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/birddogptzcontrol"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Mon, 26 May 2025 13:45:19 GMT"},{"key":"Content-Length","value":"82"}],"cookie":[],"responseTime":null,"body":"{\n    \"FocusMode\": \"Auto\",\n    \"Menu\": \"Off\",\n    \"X-Axis\": \"9323\",\n    \"Y-Axis\": \"338\",\n    \"Z-Axis\": \"16384\"\n}"}],"_postman_id":"a0f7b5e1-25bb-4a2d-bb4c-79f5dcf29d8f"},{"name":"birddogptzcontrol","event":[{"listen":"test","script":{"id":"dffb8ab9-3f2e-47ee-88f0-43bec96d2c75","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const header = \"application/json\"\r","\r","const response = pm.response;\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","// Get the request body\r","const requestBody = pm.request.body.raw;\r","\r","// Check if the request body is not empty\r","if (requestBody && requestBody.trim() !== \"\") {\r","    \r","    const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","    const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","    const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","    const header = \"application/json\"\r","    \r","    const response = pm.response;\r","    const responseJson = pm.response.json();\r","    var schema = {\r","        \"type\": \"object\",\r","          \"properties\": {\r","            \"X-Axis\": {\r","              \"type\": \"string\"\r","            },\r","            \"Y-Axis\": {\r","              \"type\": \"string\"\r","            },\r","            \"Z-Axis\": {\r","              \"type\": \"string\"\r","            },\r","            \"Menu\": {\r","              \"type\": \"string\"\r","            }\r","          },\r","          \"required\": [\r","            \"X-Axis\",\r","            \"Y-Axis\",\r","            \"Z-Axis\",\r","            \"Menu\"\r","          ]\r","    };\r","    \r","    \r","    jsonRestResponses.validateStatusCode(response, 200)\r","    jsonRestResponses.validateHeader(response, header)\r","    \r","    testResorces.betweenTwoNumbers(responseJson, \"X-Axis\", -12992, 12208)\r","    testResorces.betweenTwoNumbers(responseJson, \"Y-Axis\", -6860, 5620)\r","    testResorces.betweenTwoNumbers(responseJson, \"Z-Axis\", 0x00, 0x4000)\r","    testResorces.shouldBeOneOf(responseJson, \"Menu\", [\"On\", \"Off\"])\r","\r","} else {\r","    console.log(\"Request body is empty. Skipping additional test code\");\r","}\r","\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"6ea23a82-c6c6-4540-b068-8f3b81483417","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"6ae27f19-9259-43ae-918b-48ca161d50e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"Zoom\":\"tele\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/birddogptzcontrol","urlObject":{"port":"8080","path":["birddogptzcontrol"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"2c3fb998-4164-4391-9095-e6bfaac2a9e5","name":"absolute movement","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"X-Axis\": \"444\",\r\n    \"Y-Axis\": \"444\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{BASE-URL}}:8080/birddogptzcontrol","host":["{{BASE-URL}}"],"port":"8080","path":["birddogptzcontrol"],"query":[{"key":"PanTilt","value":"home","description":"Options include: \"home\", \"up\", \"down\", \"left\", \"right\", \"upleft\", \"upright\", \"downleft\", \"downright\", \"stop\"","disabled":true},{"key":"Focus","value":"in","description":"Options include: \"in\", \"out\", \"stop\"","disabled":true},{"key":"Zoom","value":"tele","description":"Options include: \"tele\", \"wide\", \"stop\"","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 27 May 2025 10:14:11 GMT"},{"key":"Content-Length","value":"79"}],"cookie":[],"responseTime":null,"body":"{\n    \"FocusMode\": \"Auto\",\n    \"Menu\": \"Off\",\n    \"X-Axis\": \"444\",\n    \"Y-Axis\": \"444\",\n    \"Z-Axis\": \"493\"\n}"},{"id":"cd933308-a3b5-4ce7-ac64-f6eefeb5af8b","name":"relative movement","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"Zoom\":\"tele\"\r\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{BASE-URL}}:8080/birddogptzcontrol","host":["{{BASE-URL}}"],"port":"8080","path":["birddogptzcontrol"],"query":[{"key":"PanTilt","value":"home","description":"Options include: \"home\", \"up\", \"down\", \"left\", \"right\", \"upleft\", \"upright\", \"downleft\", \"downright\", \"stop\"","disabled":true},{"key":"Focus","value":"in","description":"Options include: \"in\", \"out\", \"stop\"","disabled":true},{"key":"Zoom","value":"tele","description":"Options include: \"tele\", \"wide\", \"stop\"","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Mon, 01 Sep 2025 08:33:29 GMT"},{"key":"Content-Length","value":"74"}],"cookie":[],"responseTime":null,"body":"{\n    \"FocusMode\": \"Auto\",\n    \"Menu\": \"Off\",\n    \"X-Axis\": \"-1\",\n    \"Y-Axis\": \"1\",\n    \"Z-Axis\": \"0\"\n}"}],"_postman_id":"6ae27f19-9259-43ae-918b-48ca161d50e5"}],"id":"fced551a-0f62-4f83-a4e6-cf5deb4f3b1b","description":"<ul>\n<li><p>GET</p>\n<ul>\n<li>Retrieve the absolute positioning keys, and status on the OSD menu</li>\n</ul>\n</li>\n<li><p>POST</p>\n<ul>\n<li><p>The \"PanTilt\", \"Zoom\" &amp; \"Focus\" APIs require a \"stop\" command to be sent, in a separate API call, to stop the movement of the camera, or camera lens.</p>\n</li>\n<li><p>Focus movements require the camera to be set to manual focus which can be set in the \"/birddogptzsetup\" API</p>\n</li>\n<li><p>X, Y &amp; Z Axis keys are for absolute positioning. <strong>The</strong> <b>\"X-Axis\" &amp; \"Y-Axis\"</b> <strong>keys</strong> <b>MUST</b> <strong>be used together</strong>. If not the API will return {\"status\": \"Invalid Command\"}</p>\n</li>\n</ul>\n</li>\n</ul>\n<hr />\n<p><strong>Common to all cameras:</strong></p>\n<p>GET JSON Body:</p>\n<ul>\n<li>\"Menu\" → \"On\", \"Off\"</li>\n</ul>\n<p>POST - All the keys are entered into the POST body.</p>\n<p>POST JSON Body:</p>\n<ul>\n<li><p>\"PanTilt\" → \"home\", \"up\", \"down\", \"left\", \"right\", \"upleft\", \"upright\", \"downleft\", \"downright\", \"stop\"</p>\n</li>\n<li><p>\"Zoom\" → \"tele\", \"wide\", \"stop\"</p>\n</li>\n<li><p>\"Focus\" → \"in\", \"out\", \"stop\"</p>\n</li>\n<li><p>\"Menu\" → \"On\", \"Off\"</p>\n</li>\n</ul>\n<hr />\n<p><strong>X1, X1 Ultra &amp; MAX:</strong></p>\n<p>GET JSON Body:</p>\n<ul>\n<li><p>\"X-Axis \" → Range -12992 to 12208</p>\n</li>\n<li><p>\"Y-Axis\" → Range -6860 to 5620</p>\n</li>\n<li><p>\"Z-Axis\" → Range 0 to 16384</p>\n</li>\n</ul>\n<p>POST - All the keys are entered into the POST body.</p>\n<p>POST JSON Body:</p>\n<ul>\n<li><p>\"X-Axis\" → Range -12996 to 12208</p>\n</li>\n<li><p>\"Y-Axis\" → Range -6860 to 5620</p>\n</li>\n<li><p>\"Z-Axis\" → Range 0 to 16384</p>\n</li>\n</ul>\n<hr />\n<p><strong>X4 Ultra:</strong></p>\n<p>GET JSON Body:</p>\n<ul>\n<li><p>\"X-Axis \" → Range -2448 to 2448</p>\n</li>\n<li><p>\"Y-Axis\" → Range -432 to 1296</p>\n</li>\n<li><p>\"Z-Axis\" → Range 0 to 4912</p>\n</li>\n</ul>\n<p>POST - All the keys are entered into the POST body.</p>\n<p>POST JSON Body:</p>\n<ul>\n<li><p>\"X-Axis \" → Range -2448 to 2448</p>\n</li>\n<li><p>\"Y-Axis\" → Range -432 to 1296</p>\n</li>\n<li><p>\"Z-Axis\" → Range 0 to 4912</p>\n</li>\n</ul>\n<hr />\n<p><strong>X5 Ultra:</strong></p>\n<p>GET JSON Body:</p>\n<ul>\n<li><p>\"X-Axis \" → Range -170 to 170</p>\n</li>\n<li><p>\"Y-Axis\" → Range -30 to 90</p>\n</li>\n<li><p>\"Z-Axis\" → Range 100 to 2000</p>\n</li>\n</ul>\n<p>POST - All the keys are entered into the POST body.</p>\n<p>POST JSON Body:</p>\n<ul>\n<li><p>\"X-Axis \" → Range -170 to 170</p>\n</li>\n<li><p>\"Y-Axis\" → Range -30 to 90</p>\n</li>\n<li><p>\"Z-Axis\" → Range 100 to 2000</p>\n</li>\n</ul>\n","_postman_id":"fced551a-0f62-4f83-a4e6-cf5deb4f3b1b"}],"id":"54ccb73a-dcc9-4574-af66-90ff4e726496","description":"<p>API endpoints that pertain to camera movement and colour settings.</p>\n<p>These settings are:</p>\n<ul>\n<li><p>Exposure Setup</p>\n</li>\n<li><p>Picture Setup</p>\n</li>\n<li><p>Advanced Setup</p>\n</li>\n<li><p>White Balance Setup</p>\n</li>\n<li><p>PTZ Setup</p>\n</li>\n<li><p>Colour Matrix Setup</p>\n</li>\n<li><p>Presets</p>\n</li>\n<li><p>PTZ Control</p>\n</li>\n</ul>\n","_postman_id":"54ccb73a-dcc9-4574-af66-90ff4e726496"},{"name":"NDI Finder Settings","item":[{"name":"NDI Group Name","item":[{"name":"NDIGrpName","event":[{"listen":"test","script":{"id":"088c932b-0771-4634-bac0-3620d4f88ecf","exec":["const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses')\r","const response = pm.response;\r","const header = \"text/plain\"\r","\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"f04e28bb-fc8a-4d5d-8cd7-4dea0715315c","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"3357f73a-30af-4d9b-ba3a-1ff46ca803d0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/NDIGrpName","description":"<p>Response body header = \"text/plain\"</p>\n","urlObject":{"port":"8080","path":["NDIGrpName"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"8a601e14-1f77-47cd-9c73-78cbdae7dd24","name":"ALL X Series Cameras","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/NDIGrpName"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"text/plain"},{"key":"Date","value":"Tue, 04 Feb 2025 09:23:21 GMT"},{"key":"Content-Length","value":"27"}],"cookie":[],"responseTime":null,"body":"\"BirdDog-Co1\",\"BirdDog-Co2\""}],"_postman_id":"3357f73a-30af-4d9b-ba3a-1ff46ca803d0"},{"name":"NDIGrpName","event":[{"listen":"test","script":{"id":"af49c39a-c0ef-4a84-ad85-3e0e8d6193d4","exec":["const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses')\r","const response = pm.response;\r","const header = \"text/plain\"\r","\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"96105a09-99d6-4e7a-a5a2-807b2d77b056","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"b7ea96a9-1349-4df1-9aab-60e756142ab4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"Your_Group, My_Group","options":{"raw":{"language":"text"}}},"url":"{{BASE-URL}}:8080/NDIGrpName","description":"<p>Response body header = \"text/plain\"</p>\n","urlObject":{"port":"8080","path":["NDIGrpName"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"a0f27b9d-8b96-4540-9da1-d0c78a3fcbaa","name":"ALL X Series Cameras","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"Your_Group, My_Group","options":{"raw":{"language":"text"}}},"url":"{{BASE-URL}}:8080/NDIGrpName"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"text/plain"},{"key":"Date","value":"Mon, 26 May 2025 10:07:42 GMT"},{"key":"Content-Length","value":"20"}],"cookie":[],"responseTime":null,"body":"Your_Group, My_Group"}],"_postman_id":"b7ea96a9-1349-4df1-9aab-60e756142ab4"}],"id":"006158e2-43e5-41a1-9c2a-84033d8db6eb","description":"<p><strong>All X Series Cameras:</strong></p>\n<p>This command will return the name of the currently subscribed NDI group. The response will be a plain text return.</p>\n","_postman_id":"006158e2-43e5-41a1-9c2a-84033d8db6eb"},{"name":"NDI Off Subnet Sources","item":[{"name":"NDIOffSnSrc","event":[{"listen":"test","script":{"id":"af49c39a-c0ef-4a84-ad85-3e0e8d6193d4","exec":["const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses')\r","const response = pm.response;\r","const header = \"text/plain\"\r","\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"450cfea2-bd78-4f69-a7c5-4b84d027c4a0","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"ad4ad2f9-aa40-4af6-8b84-8b5d430cb79f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/NDIOffSnSrc","description":"<p>Response body header = \"text/plain\"</p>\n","urlObject":{"port":"8080","path":["NDIOffSnSrc"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"2448473f-d2df-4d9d-9f8f-78935d379e9d","name":"All Cameras","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/NDIOffSnSrc"},"status":"OK","code":200,"_postman_previewlanguage":"plain","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization","enabled":true},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT","enabled":true},{"key":"Access-Control-Allow-Origin","value":"*","enabled":true},{"key":"Content-Type","value":"text/plain","enabled":true},{"key":"Date","value":"Fri, 04 Oct 2024 06:40:21 GMT","enabled":true},{"key":"Content-Length","value":"31","enabled":true}],"cookie":[],"responseTime":null,"body":"\"192.168.1.225\",\"192.168.1.223\""}],"_postman_id":"ad4ad2f9-aa40-4af6-8b84-8b5d430cb79f"},{"name":"NDIOffSnSrc","event":[{"listen":"test","script":{"id":"af49c39a-c0ef-4a84-ad85-3e0e8d6193d4","exec":["const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses')\r","const response = pm.response;\r","const header = \"text/plain\"\r","\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"c1bd45ce-0ae8-4058-893b-e705b3097066","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"38056cb5-78b1-4e99-bf9d-750eedc524a1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"192.168.100.100,192.168.100.101","options":{"raw":{"language":"text"}}},"url":"{{BASE-URL}}:8080/NDIOffSnSrc","description":"<p>Response body header = \"text/plain\"</p>\n","urlObject":{"port":"8080","path":["NDIOffSnSrc"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[],"_postman_id":"38056cb5-78b1-4e99-bf9d-750eedc524a1"}],"id":"928cabba-3979-45ac-b1bc-ba6ee0e97c5f","description":"<p><strong>All X Series Cameras:</strong></p>\n<p>Set or retrieve the off subnet (external sources) IP list. The response will be a text only response.</p>\n<p>header = \"text/plain\"</p>\n<ul>\n<li>POST body is a comma seperated list of IP address with no spaces between the values.</li>\n</ul>\n","_postman_id":"928cabba-3979-45ac-b1bc-ba6ee0e97c5f"},{"name":"NDI Finder","item":[{"name":"reset","event":[{"listen":"test","script":{"id":"79c0468a-4b44-4da2-bae0-5389e99fc5e1","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"status\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"status\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"status\", [\"success\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}},"requests":{}}},{"listen":"prerequest","script":{"id":"b64d6750-0b8f-452f-b5b0-3d1abb892818","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"40196adf-7cc4-4716-8783-415340091711","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/reset","description":"<p>This command will immediately reset NDI Source List.</p>\n<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["reset"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"d0b8a91e-75db-4955-bbf0-cddf7b19f29d","name":"X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/reset"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:24:31 GMT"},{"key":"Content-Length","value":"21"}],"cookie":[],"responseTime":null,"body":"{\n    \"Status\": \"success\"\n}"}],"_postman_id":"40196adf-7cc4-4716-8783-415340091711"},{"name":"refresh","event":[{"listen":"test","script":{"id":"300c8043-292f-450a-a521-cd0fa6f19557","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Status\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Status\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"Status\", [\"success\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"5776a6db-b325-40bd-98d0-e4685b562780","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"507b4604-4798-4fb0-b785-ca033abf6c61","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/refresh","description":"<p>This command will immediately refresh NDI Source List.</p>\n<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["refresh"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"efce39e2-d01f-4f63-8675-ec497f20e014","name":"X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text","disabled":true}],"url":"{{BASE-URL}}:8080/refresh"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:24:47 GMT"},{"key":"Content-Length","value":"21"}],"cookie":[],"responseTime":null,"body":"{\n    \"Status\": \"success\"\n}"}],"_postman_id":"507b4604-4798-4fb0-b785-ca033abf6c61"},{"name":"List","event":[{"listen":"test","script":{"id":"82c6b414-1e2f-4fd1-82cf-d8c91922c88b","exec":["var schema = {","  \"type\": \"object\"","}","","var jsonResp = pm.response.json();","","","pm.test('JSON Schema is valid and the response has the required fields of the correct type', ()=> {","    pm.response.to.have.jsonSchema(schema);","});","","","pm.test(\"Response status code is 200\", function () {","    pm.response.to.have.status(200);","});","","","pm.test(\"Verify response format\", function () {","    const responseData = pm.response.json();","    ","    pm.expect(responseData).to.be.an('object');","});"],"type":"text/javascript","packages":{}}},{"listen":"prerequest","script":{"id":"470eae5e-d24f-4add-ad2f-fbef612376f1","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"83c772c9-9a26-4d03-9a90-a3ee4c970036","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/List","description":"<p>This command will get the list of active NDI Sources on the Network.</p>\n<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["List"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"b05e8f72-7875-4034-ab71-fafecd31061c","name":"X1 Ultra","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"text"}],"url":"{{BASE-URL}}:8080/List"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:26:42 GMT"},{"key":"Content-Length","value":"119"}],"cookie":[],"responseTime":null,"body":"{\n    \"BIRDDOG-4C526 (Stream1)\": \"192.168.100.100:5961\",\n    \"TEST_NDI_STREAM (Test_Stream)\": \"192.168.23.254:5961\"\n}"}],"_postman_id":"83c772c9-9a26-4d03-9a90-a3ee4c970036"}],"id":"0c42d4e3-1120-4d67-9a19-c453d6ae5a64","description":"<p><strong>All X Series Cameras:</strong></p>\n<p>Contains GET requests for:</p>\n<ul>\n<li><p>/reset → Removes all sources from the NDI Finder list and adds all available sources.</p>\n</li>\n<li><p>/refresh → Adds any available NDI sources to the NDI Finder list.</p>\n</li>\n</ul>\n<p>The return for the above APIs is - {\"status\": \"success\"}</p>\n<ul>\n<li><p>/List → Retrieves the current NDI Finder list.</p>\n<ul>\n<li><p>header = \"application/json\"</p>\n</li>\n<li><p>default response is {\"None\": \"None\"}</p>\n</li>\n</ul>\n</li>\n</ul>\n","_postman_id":"0c42d4e3-1120-4d67-9a19-c453d6ae5a64"}],"id":"2ed2babc-cce6-41f7-962c-e02dce8f4a35","description":"<p>A collection of API endpoints that relate to the NDI Finder.</p>\n","_postman_id":"2ed2babc-cce6-41f7-962c-e02dce8f4a35"},{"name":"Miscellaneous Camera Settings","item":[{"name":"Video Output Interface","item":[{"name":"videooutputinterface","event":[{"listen":"test","script":{"id":"1c5eb16c-c541-4e21-b2f1-b150adb6c811","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\")\r","\r","//Start of tests\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","//Test for X1, X1 Ultra & MAX\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    testResorces.shouldBeOneOf(responseJson, \"videooutput\", [\"hdmi\"])\r","    testResorces.nonEmptyString(responseJson, \"OutputFormat\")\r","    testResorces.shouldBeOneOf(responseJson, \"PrivacyMode\", [\"On\", \"Off\"])\r","}\r","\r","// Test for X5\r","if (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    testResorces.shouldBeOneOf(responseJson, \"Frequency\", [\"50\", \"59.94\", \"60\"])\r","    testResorces.shouldBeOneOf(responseJson, \"HDMI-1OutputDecoder\", [\"On\", \"Off\"])\r","    testResorces.nonEmptyString(responseJson, \"OutputFormat\")\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    testResorces.nonEmptyString(responseJson, \"OutputFormat\")\r","    testResorces.shouldBeOneOf(responseJson, \"videoformat\", [\"hdmi\", \"sdi\"])\r","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"6df54b8c-1b66-4a83-8548-be3a61791c07","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"videooutput\": {\r","      \"type\": \"string\"\r","    },\r","    \"OutputFormat\": {\r","      \"type\": \"string\"\r","    },\r","    \"PrivacyMode\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"videooutput\",\r","    \"OutputFormat\",\r","    \"PrivacyMode\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Frequency\": {\r","      \"type\": \"string\"\r","    },\r","    \"HDMI-1OutputDecoder\": {\r","      \"type\": \"string\"\r","    },\r","    \"MirOutputFormatror\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Frequency\",\r","    \"HDMI-1OutputDecoder\",\r","    \"OutputFormat\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersion === \"BirdDog X4 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"OutputFormat\": {\r","      \"type\": \"string\"\r","    },\r","    \"videoformat\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"OutputFormat\",\r","    \"videoformat\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"0c12191c-584f-4d24-b032-11b127f2f754","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/videooutputinterface","urlObject":{"port":"8080","path":["videooutputinterface"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"9b0ddcfe-d4a7-4023-a0bf-41e9793402ee","name":"X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/videooutputinterface"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:27:26 GMT"},{"key":"Content-Length","value":"145"}],"cookie":[],"responseTime":null,"body":"{\n    \"Dante\": \"Off\",\n    \"OutputFormat\": \"1080p60\",\n    \"OutputMode\": \"Encode\",\n    \"PreferredNIC\": \"Ethernet\",\n    \"PrivacyMode\": \"Off\",\n    \"mode\": \"encode\",\n    \"videooutput\": \"hdmi\"\n}"},{"id":"5d3d56b7-9731-463f-ab5a-9dd0f1ec3e4f","name":"X5 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/videooutputinterface"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json; charset=utf-8"},{"key":"Date","value":"Tue, 27 May 2025 02:35:15 GMT"},{"key":"Content-Length","value":"76"}],"cookie":[],"responseTime":null,"body":"{\n    \"Frequency\": \"50\",\n    \"HDMI-1OutputDecoder\": \"Off\",\n    \"OutputFormat\": \"1920x1080p50\"\n}"}],"_postman_id":"0c12191c-584f-4d24-b032-11b127f2f754"},{"name":"videooutputinterface","event":[{"listen":"test","script":{"id":"1c5eb16c-c541-4e21-b2f1-b150adb6c811","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\")\r","\r","//Start of tests\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","//Test for X1, X1 Ultra & MAX\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    testResorces.shouldBeOneOf(responseJson, \"videooutput\", [\"hdmi\"])\r","    testResorces.nonEmptyString(responseJson, \"OutputFormat\")\r","    testResorces.shouldBeOneOf(responseJson, \"PrivacyMode\", [\"On\", \"Off\"])\r","}\r","\r","// Test for X5\r","if (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    testResorces.shouldBeOneOf(responseJson, \"Frequency\", [\"50\", \"59.94\", \"60\"])\r","    testResorces.shouldBeOneOf(responseJson, \"HDMI-1OutputDecoder\", [\"On\", \"Off\"])\r","    testResorces.nonEmptyString(responseJson, \"OutputFormat\")\r","}\r","\r","if (HardwareVersion === 'BirdDog X4 Ultra'){\r","    testResorces.nonEmptyString(responseJson, \"OutputFormat\")\r","    testResorces.shouldBeOneOf(responseJson, \"videoformat\", [\"hdmi\", \"sdi\"])\r","}"],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"200eb2b0-5e71-4d53-a90f-77544bf6e77a","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra' || HardwareVersion === 'BirdDog MAX'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"videooutput\": {\r","      \"type\": \"string\"\r","    },\r","    \"OutputFormat\": {\r","      \"type\": \"string\"\r","    },\r","    \"PrivacyMode\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"videooutput\",\r","    \"OutputFormat\",\r","    \"PrivacyMode\"\r","  ]\r","}\r","\r","    // Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","    }\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Frequency\": {\r","      \"type\": \"string\"\r","    },\r","    \"HDMI-1OutputDecoder\": {\r","      \"type\": \"string\"\r","    },\r","    \"MirOutputFormatror\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Frequency\",\r","    \"HDMI-1OutputDecoder\",\r","    \"OutputFormat\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersion === \"BirdDog X4 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"OutputFormat\": {\r","      \"type\": \"string\"\r","    },\r","    \"videoformat\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"OutputFormat\",\r","    \"videoformat\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","    pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"42d6e9f2-c391-4eb4-a99e-a82bb1134345","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/videooutputinterface","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["videooutputinterface"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"5d1a50ed-ac74-4631-9d1b-46c1289019ec","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"Frequency\": \"50\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/videooutputinterface"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:27:45 GMT"},{"key":"Content-Length","value":"145"}],"cookie":[],"responseTime":null,"body":"{\n    \"Dante\": \"Off\",\n    \"OutputFormat\": \"1080p60\",\n    \"OutputMode\": \"Encode\",\n    \"PreferredNIC\": \"Ethernet\",\n    \"PrivacyMode\": \"Off\",\n    \"mode\": \"encode\",\n    \"videooutput\": \"hdmi\"\n}"}],"_postman_id":"42d6e9f2-c391-4eb4-a99e-a82bb1134345"}],"id":"4f5a1141-6d90-4474-9550-8d32f3bda54d","description":"<p>Change the behaviour of the baseband video outputs.</p>\n<p><strong>X1, X1 Ultra &amp; MAX:</strong></p>\n<ul>\n<li><p>\"OutputFormat\" → GET returns current format, POST allows changing to any supported resolution using the \"1080p30\" format</p>\n</li>\n<li><p>\"PrivacyMode\" → \"On, \"Off\"</p>\n</li>\n<li><p>\"videoformat\" → GET ONLY and always returns \"hdmi\"</p>\n</li>\n</ul>\n<p><strong>X4 Ultra:</strong></p>\n<ul>\n<li><p>\"videoformat\" → \"hdmi, \"sdi\"</p>\n</li>\n<li><p>\"OutputFormat\" → GET returns current format, POST allows changing to any supported resolution using the \"1080p30\" format</p>\n</li>\n</ul>\n<p><strong>X5 Ultra:</strong></p>\n<ul>\n<li><p>\"Frequency\" → \"60\", \"59.94\", \"50\"</p>\n</li>\n<li><p>\"HDMI-1OutputDecoder\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"OutputFormat\" → GET returns current format, POST allows changing to any supported resolution using the \"1920x1080p50\" format</p>\n</li>\n</ul>\n","_postman_id":"4f5a1141-6d90-4474-9550-8d32f3bda54d"},{"name":"Capture ***DEPRECATED***","item":[{"name":"capture","event":[{"listen":"test","script":{"id":"b15ad8bb-9d86-441d-8049-a5b564f66c9b","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Status\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Status\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"Status\", [\"success\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"0b18d034-1a6b-4825-b862-490e4818207e","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"cf6fc25d-9aec-48f0-9bcd-c3b350b22e0c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{BASE-URL}}:8080/capture?location=decoder","description":"<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["capture"],"host":["{{BASE-URL}}"],"query":[{"description":{"content":"<p>\"encoder\" or \"decoder\"</p>\n","type":"text/plain"},"key":"location","value":"decoder"}],"variable":[]}},"response":[{"id":"2b6aa510-07f2-4f0c-b5be-8d23b4bd895f","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"url":{"raw":"{{BASE-URL}}:8080/capture?location=decoder","host":["{{BASE-URL}}"],"port":"8080","path":["capture"],"query":[{"key":"location","value":"decoder","description":"\"encoder\" or \"decoder\""}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:28:08 GMT"},{"key":"Content-Length","value":"20"}],"cookie":[],"responseTime":null,"body":"{\n    \"Status\": \"success\"\n}"}],"_postman_id":"cf6fc25d-9aec-48f0-9bcd-c3b350b22e0c"}],"id":"b61c3e81-4e72-4e18-a493-04e2622e7090","description":"<p><strong>*DEPRECATED</strong>*</p>\n<p><del><strong>All Cameras:</strong></del></p>\n<p><del>This command will capture the current image displayed by either the encoder or decoder for use as the screensaver \"Capture\" frame.</del></p>\n<ul>\n<li><del>Use the \"location\" parameter to choose if the captured frame is from the encoder or the decoder.</del></li>\n</ul>\n<p><del>The return of the APIs is - {\"Status\": \"success\"}</del></p>\n","_postman_id":"b61c3e81-4e72-4e18-a493-04e2622e7090"},{"name":"Tally","item":[{"name":"tally","event":[{"listen":"test","script":{"id":"ecb1e28f-921f-47c7-87d9-57acc261fb7e","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\")\r","\r","// Start of API tests\r","// Tests common to all cameras\r","jsonSchemaVerification.validateJsonSchema(response, schema);\r","jsonRestResponses.validateStatusCode(response, 200);\r","jsonRestResponses.validateHeader(response, header);\r","\r","testResorces.shouldBeOneOf(responseJson, \"tally_state\", [\"On\", \"Off\"]);\r","\r","//X1 & X1 Ultra tests\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra') {\r","    testResorces.shouldBeOneOf(responseJson, \"tally_rest_state\", [\"white\", \"Off\"])\r","}\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"cdd56b25-41c9-42d3-b19e-5d905aa25307","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"tally_state\": {\r","      \"type\": \"string\"\r","    },\r","    \"tally_rest_state\": {\r","        \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"tally_state\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"tally_state\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"tally_state\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"9b7ff8c2-ced1-4e03-834b-5447cab10fef","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/tally","urlObject":{"port":"8080","path":["tally"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"27a52083-addf-460d-be7f-e2a5e3fb777d","name":"X1 Ultra","originalRequest":{"method":"GET","header":[],"url":"{{BASE-URL}}:8080/tally"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:28:31 GMT"},{"key":"Content-Length","value":"48"}],"cookie":[],"responseTime":null,"body":"{\n    \"tally_rest_state\": \"white\",\n    \"tally_state\": \"Off\"\n}"}],"_postman_id":"9b7ff8c2-ced1-4e03-834b-5447cab10fef"},{"name":"tally","event":[{"listen":"test","script":{"id":"ecb1e28f-921f-47c7-87d9-57acc261fb7e","exec":["const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const responseJson = pm.response.json();\r","const header = \"application/json\"\r","\r","// Get the values from the pre-request script\r","var schema = pm.environment.get(\"schema\");\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\")\r","\r","// Start of API tests\r","// Tests common to all cameras\r","jsonSchemaVerification.validateJsonSchema(response, schema);\r","jsonRestResponses.validateStatusCode(response, 200);\r","jsonRestResponses.validateHeader(response, header);\r","\r","testResorces.shouldBeOneOf(responseJson, \"tally_state\", [\"On\", \"Off\"]);\r","\r","//X1 & X1 Ultra tests\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra') {\r","    testResorces.shouldBeOneOf(responseJson, \"tally_rest_state\", [\"white\", \"Off\"])\r","}\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"cdd56b25-41c9-42d3-b19e-5d905aa25307","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);\r","\r","// Get the IP address and port from the global variables\r","var ipAddress = pm.environment.get(\"BASE-URL\");\r","var port = pm.environment.get(\"BASE-PORT\");\r","\r","// Make the API request\r","pm.sendRequest(\"http://\" + ipAddress + \":\" + port + \"/about\", function (err, response) {\r","    if (err) {\r","        console.log(err);\r","    } else {\r","        // Assuming the response has a field called 'HardwareVersion'\r","        var HardwareVersion = response.json().HardwareVersion;\r","        \r","        // Store the desired value in an environment variable\r","        pm.environment.set(\"HardwareVersion\", HardwareVersion);\r","    }\r","});\r","\r","// Get the value from the pre-request script\r","var HardwareVersion = pm.environment.get(\"HardwareVersion\");\r","\r","if (HardwareVersion === 'BirdDog X1' || HardwareVersion === 'BirdDog X1 Ultra'){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"tally_state\": {\r","      \"type\": \"string\"\r","    },\r","    \"tally_rest_state\": {\r","        \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"tally_state\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","pm.environment.set(\"schema\", schema);\r","}\r","\r","if  (HardwareVersion === \"BirdDog X5 Ultra\"){\r","    var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"tally_state\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"tally_state\"\r","  ]\r","}\r","// Store the desired value in an environment variable\r","pm.environment.set(\"schema\", schema);\r","}"],"type":"text/javascript","packages":{}}}],"id":"f6f933c8-2954-41dc-8e9b-e176ce0b6db4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"tally_state\": \"On\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/tally","urlObject":{"port":"8080","path":["tally"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"4a3b675e-dd93-4548-8874-87e3d2c6b929","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"tally_rest_state\": \"Off\",\r\n    \"tally_state\": \"On\"\r\n}","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/tally"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:28:49 GMT"},{"key":"Content-Length","value":"45"}],"cookie":[],"responseTime":null,"body":"{\n    \"tally_rest_state\": \"Off\",\n    \"tally_state\": \"On\"\n}"}],"_postman_id":"f6f933c8-2954-41dc-8e9b-e176ce0b6db4"}],"id":"b9b49bd8-c2f6-498e-834c-a504671585e3","description":"<p><strong>All X Series Cameras:</strong></p>\n<ul>\n<li><p>\"tally_state\" → \"On\", \"Off\"</p>\n</li>\n<li><p>\"tally_rest_state\" → \"white\", \"Off\"</p>\n</li>\n</ul>\n","_postman_id":"b9b49bd8-c2f6-498e-834c-a504671585e3"},{"name":"ResetSystemDefault","event":[{"listen":"test","script":{"id":"66bb46e6-4d40-47a2-bfc3-c3f1d3d371d7","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Status\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Status\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"status\", [\"success\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"ee7ca668-89c0-4d50-abc9-2cf31a8c83dc","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"2377eb3c-ed08-4f19-9dcb-78df0e3849a3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"{{BASE-URL}}:8080/ResetSystemDefault","description":"<p>The return of the API is - {\"Status\":\"success\"}</p>\n<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["ResetSystemDefault"],"host":["{{BASE-URL}}"],"query":[{"disabled":true,"description":{"content":"<p>Keep current network settings: \"yes\" or \"no\"</p>\n","type":"text/plain"},"key":"KeepNetWork","value":"yes"}],"variable":[]}},"response":[{"id":"c5199a13-ccd3-4364-93a9-d0bd9f267ee8","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":{"raw":"{{BASE-URL}}:8080/ResetSystemDefault","host":["{{BASE-URL}}"],"port":"8080","path":["ResetSystemDefault"],"query":[{"key":"KeepNetWork","value":"yes","description":"Keep current network settings: \"yes\" or \"no\"","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:29:10 GMT"},{"key":"Content-Length","value":"21"}],"cookie":[],"responseTime":null,"body":"{\n    \"Status\": \"success\"\n}"}],"_postman_id":"2377eb3c-ed08-4f19-9dcb-78df0e3849a3"},{"name":"reboot","event":[{"listen":"test","script":{"id":"739654dd-abec-44a4-b04b-1b51ba3e724c","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"status\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"status\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"status\", [\"success\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"19d311c7-b60e-46d2-b19e-241c07e18ef6","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"d101a43b-375b-4e27-a914-b95ada9e1867","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{BASE-URL}}:8080/reboot","description":"<p>The return of the API is - {\"Status\":\"success\"}</p>\n<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["reboot"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"52e46536-35e5-48a4-8314-629998793fd5","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"url":"{{BASE-URL}}:8080/reboot"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Tue, 04 Feb 2025 09:29:57 GMT"},{"key":"Content-Length","value":"20"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"d101a43b-375b-4e27-a914-b95ada9e1867"},{"name":"restart","event":[{"listen":"test","script":{"id":"fd93d13a-61dc-4bbb-9ebf-3c2f3977b220","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Status\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"status\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"status\", [\"success\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"c35070ab-5c2e-40fd-82fd-43a6b94c5c5c","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"7e0e6707-62fd-4877-ad59-ceab70c9aa79","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{BASE-URL}}:8080/restart","description":"<p>The return of the API is - {\"Status\":\"success\"}</p>\n<p>Response body header = \"application/json\"</p>\n","urlObject":{"port":"8080","path":["restart"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"c5f1a126-5898-48b1-a6c5-549214664ef1","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"url":"{{BASE-URL}}:8080/restart"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Date","value":"Tue, 04 Feb 2025 09:31:21 GMT"},{"key":"Content-Length","value":"20"}],"cookie":[],"responseTime":null,"body":"{\n    \"status\": \"success\"\n}"}],"_postman_id":"7e0e6707-62fd-4877-ad59-ceab70c9aa79"},{"name":"ResetImage","event":[{"listen":"test","script":{"id":"713294eb-9efa-4e17-a625-70c9b3e90a51","exec":["//Check if all test need to be skipped\r","var skipTests = pm.environment.get(\"skipTests\")\r","if (skipTests){\r","    pm.test.skip(\"Skipping test because the API isn't supported by this device\")\r","    return; //Exits the script\r","}\r","const jsonSchemaVerification = pm.require('@birddog-api-yaml/json_schema_verification');\r","const jsonRestResponses = pm.require('@birddog-api-yaml/json_and_rest_responses');\r","const testResorces = pm.require('@birddog-api-yaml/test_resourses');\r","const response = pm.response;\r","const header = \"application/json\"\r","//Catch error caused by API request not returning JSON when the API isn't supported\r","let responseJson\r","try {\r","    responseJson = pm.response.json();\r","} catch (e) {\r","    console.log('No JSON returned because API is not supported by this device.')\r","}\r","\r","var schema = {\r","  \"type\": \"object\",\r","  \"properties\": {\r","    \"Status\": {\r","      \"type\": \"string\"\r","    }\r","  },\r","  \"required\": [\r","    \"Status\"\r","  ]\r","}\r","\r","jsonSchemaVerification.validateJsonSchema(response, schema)\r","jsonRestResponses.validateStatusCode(response, 200)\r","jsonRestResponses.validateHeader(response, header)\r","\r","testResorces.shouldBeOneOf(responseJson, \"status\", [\"success\"])\r",""],"type":"text/javascript","packages":{"@birddog-api-yaml/json_schema_verification":{"id":"018f4b51-fe02-717a-aad7-fa5d499e1be3"},"@birddog-api-yaml/json_and_rest_responses":{"id":"018f50ab-682c-7576-93a4-08de00995c33"},"@birddog-api-yaml/test_resourses":{"id":"018f559e-b658-7ca2-9c80-8e0430d578e6"}}}},{"listen":"prerequest","script":{"id":"535e3a7b-8976-4844-916d-b38a55eb0006","exec":["pm.environment.set(\"skipTests\", false)\r","\r","//Clear the schema environment variable\r","var schema = {}\r","pm.environment.set(\"schema\", schema);"],"type":"text/javascript","packages":{}}}],"id":"63b10dfa-96b2-4b6d-975c-039c2fc018af","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{BASE-URL}}:8080/RestImage","urlObject":{"port":"8080","path":["RestImage"],"host":["{{BASE-URL}}"],"query":[],"variable":[]}},"response":[{"id":"411260ef-a056-4790-b22b-e92fecb11c1d","name":"X1 Ultra","originalRequest":{"method":"POST","header":[],"url":"{{BASE-URL}}:8080/RestImage"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Headers","value":"Origin, X-Requested-With, Content-Type, Accept, Authorization"},{"key":"Access-Control-Allow-Methods","value":"GET,HEAD,OPTIONS,POST,PUT"},{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Tue, 04 Feb 2025 09:31:42 GMT"},{"key":"Content-Length","value":"20"}],"cookie":[],"responseTime":null,"body":"{\n    \"Status\": \"success\"\n}"}],"_postman_id":"63b10dfa-96b2-4b6d-975c-039c2fc018af"}],"id":"c947d9a8-529c-4a75-b0ee-fa9600ec80a9","description":"<p><strong>All X Series Cameras:</strong></p>\n<ul>\n<li><p>/reboot - This command will immediately initiate a reboot of the BirdDog device.</p>\n</li>\n<li><p>/restart - This command will initiate a video system restart on the BirdDog device.</p>\n</li>\n<li><p>/ResetSystemDefault - Factory resest the device, with an optional parameter to keep network settings.</p>\n</li>\n<li><p>/ResetImage - Resets all the image settings, as per the Web UI button \"CamControl\" → \"Camera Control\" → \"Image Settings Reset\" → \"RESET\"</p>\n</li>\n</ul>\n<p>The return for all the above APIs is - {\"status\": \"success\"}.</p>\n","_postman_id":"c947d9a8-529c-4a75-b0ee-fa9600ec80a9"}],"event":[{"listen":"prerequest","script":{"id":"96bf7667-3ae2-4ec5-aead-dc5233a51b58","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"1f8bfa64-5a5f-4918-9f7f-b06b7f12012c","type":"text/javascript","exec":[""]}}]}