{"info":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"25645590","collectionId":"5c7d1043-3f47-4af9-b170-e2019402f726","publishedId":"2sBXiok9Fr","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"1e837e"},"publishDate":"2026-04-01T13:24:58.000Z"},"item":[{"name":"c1-core","item":[{"name":"assets","item":[{"name":"{assetId}","item":[{"name":"Delete asset","id":"77b2a96d-9120-4113-8d7f-d4078a96820c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/assets/:assetId?updateNames=1","description":"<p>Deletes an asset.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["assets",":assetId"],"host":["https://core.sensaru.net/api/v1"],"query":[{"description":{"content":"<p>(optional) Default: <code>0</code>. Set to <code>1</code> to automatically set the economic's unit name and property name to the aggregated address.</p>\n","type":"text/plain"},"key":"updateNames","value":"1"}],"variable":[{"id":"ec3060f1-6ec5-4d20-a966-dd4fd57fbdbd","description":{"content":"<p>(required) The ID as returned by <code>/assets</code>.</p>\n","type":"text/plain"},"type":"any","value":"85928e6f-ba36-46a6-b656-b4e68ea4662d","key":"assetId"}]}},"response":[],"_postman_id":"77b2a96d-9120-4113-8d7f-d4078a96820c"},{"name":"Get asset","id":"07617cb1-284f-4fa1-8da4-bd999f599902","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/assets/:assetId","description":"<p>Returns a single asset. See <code>Get assets</code> for a description of the returned JSON.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["assets",":assetId"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[{"id":"00da7127-9965-417e-993d-03c6707de5ce","description":{"content":"<p>(required) The ID as returned by <code>/assets</code>.</p>\n","type":"text/plain"},"type":"any","value":"48e18ebb-26c5-45fe-b8db-eb2eded4d829","key":"assetId"}]}},"response":[],"_postman_id":"07617cb1-284f-4fa1-8da4-bd999f599902"},{"name":"Update asset","id":"7a803ee7-e295-449a-aa2c-11963f19a2f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"My second asset\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/assets/:assetId?updateNames=1","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["assets",":assetId"],"host":["https://core.sensaru.net/api/v1"],"query":[{"description":{"content":"<p>(optional) Default: <code>0</code>. Set to <code>1</code> to automatically set the economic's unit name and property name to the aggregated address.</p>\n","type":"text/plain"},"key":"updateNames","value":"1"}],"variable":[{"id":"b26141c7-bbf9-40f2-94a5-5a44123259e8","type":"any","value":"48e18ebb-26c5-45fe-b8db-eb2eded4d829","key":"assetId"}]}},"response":[],"_postman_id":"7a803ee7-e295-449a-aa2c-11963f19a2f8"},{"name":"Replace asset","id":"6a836ca0-fdb9-45b8-bfb8-d25689db78c5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"The Asset\",\r\n    \"locationId\": \"21:1270\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/assets/:assetId?updateNames=1","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["assets",":assetId"],"host":["https://core.sensaru.net/api/v1"],"query":[{"description":{"content":"<p>(optional) Default: <code>0</code>. Set to <code>1</code> to automatically set the economic's unit name and property name to the aggregated address.</p>\n","type":"text/plain"},"key":"updateNames","value":"1"}],"variable":[{"id":"64743a89-fdba-471a-9d7b-bffecbb6c1f9","type":"any","value":"48e18ebb-26c5-45fe-b8db-eb2eded4d829","key":"assetId"}]}},"response":[],"_postman_id":"6a836ca0-fdb9-45b8-bfb8-d25689db78c5"}],"id":"17c8306a-d123-4899-bd5a-68fedbad8b08","_postman_id":"17c8306a-d123-4899-bd5a-68fedbad8b08","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get assets","id":"29bb8170-1fc2-4c92-8518-34092a585793","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n"}],"url":"https://core.sensaru.net/api/v1/assets?orderBy=level,name&type=economic_unit,property&format=map","description":"<p>Returns a list of all assets, i. e. portfolios, economic units, properties and administration units.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.assets</strong></td>\n<td>array</td>\n<td></td>\n<td>See description below.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"1270.2.4\"</code></td>\n<td>The key to pass to the query parameter <code>offset</code> to get the next page. <code>nextKey</code> is set to an empty string when there is no more data.</td>\n</tr>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"asset-object\">Asset object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td></td>\n<td>The ID of the asset. Use this ID whereever an asset ID is required as part of the path.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td>\"Kiel, Goethestraße 12\"</td>\n<td>The user-set name of the asset.</td>\n</tr>\n<tr>\n<td><strong>level</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td><code>1</code> =&gt; asset is a portfolio  <br /><code>2</code> =&gt; asset is an economic unit  <br /><code>3</code> =&gt; asset is a property  <br /><code>4</code> =&gt; asset is an administration unit</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1240.2.4\"</code></td>\n<td>This is the economic unit ID, property ID and administration unit ID separated by dots.  <br />For example  <br />- Economic unit ID: `1000`  <br />- Property ID: `105`  <br />- Administration unit ID: `8`  <br />becomes `1000.105.8`.  <br />When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: `1000.105`.  <br />When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: `1000`.  <br />If the economic unit is part of a portfolio, the location ID is prefixed with the portfolio ID and a colon as separator. E. g.: <code>22:1000.105.8</code> for portfolio <code>22</code>.</td>\n</tr>\n<tr>\n<td><strong>portfolioId</strong></td>\n<td>string</td>\n<td><code>\"22\"</code></td>\n<td>(optional) The portfolio ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>economicUnitId</strong></td>\n<td>string</td>\n<td><code>\"1240\"</code></td>\n<td>The economic unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>propertyId</strong></td>\n<td>string</td>\n<td><code>\"2\"</code></td>\n<td>The property ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>administrationUnitId</strong></td>\n<td>string</td>\n<td><code>\"4\"</code></td>\n<td>The administration unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array<br /><br /></td>\n<td><code>[ { \"city\": \"The City\", \"country\": \"My Country\", \"street\": \"Main Street\", \"streetNumber\": \"2\", \"zip\": \"783928\" } ]</code></td>\n<td>(optional) An optional array of addresses. The array is only returned if it was created previously.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["assets"],"host":["https://core.sensaru.net/api/v1"],"query":[{"disabled":true,"description":{"content":"<p>Specify <code>nextKey</code> from the last result to get the next page.</p>\n","type":"text/plain"},"key":"offset","value":""},{"disabled":true,"description":{"content":"<p>The number of log entries to return. The maximum value is <code>10000</code>. Defaults to <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"1000"},{"description":{"content":"<p>Order the result using this field or fields (separated by comma). Possible values are: <code>id</code>, <code>location_id</code>, <code>name</code>, <code>portfolio_id</code>, <code>economic_unit_id</code>, <code>property_id</code>, <code>administration_unit_id</code> or <code>level</code>. Defaults to <code>id</code>. This query parameter is ignored when <code>format</code> is set to <code>tree</code>.</p>\n","type":"text/plain"},"key":"orderBy","value":"level,name"},{"disabled":true,"description":{"content":"<p>Set to <code>false</code> to sort the entries descending. Defaults to <code>true</code>.</p>\n","type":"text/plain"},"key":"ascending","value":"true"},{"disabled":true,"description":{"content":"<p>Search and filter the assets using this value.</p>\n","type":"text/plain"},"key":"filter","value":""},{"description":{"content":"<p>The asset type to return: <code>all</code>, <code>portfolio</code>, <code>economic_unit</code>, <code>property</code> or <code>administration_unit</code>. Default: <code>all</code>. Multiple values can be provided separated by comma.</p>\n","type":"text/plain"},"key":"type","value":"economic_unit,property"},{"disabled":true,"description":{"content":"<p>Only return assets with this portfolio ID.</p>\n","type":"text/plain"},"key":"portfolioId","value":"71"},{"disabled":true,"description":{"content":"<p>Only return assets with this economic unit ID.</p>\n","type":"text/plain"},"key":"economicUnitId","value":"2108"},{"disabled":true,"description":{"content":"<p>Only return assets with this property ID.</p>\n","type":"text/plain"},"key":"propertyId","value":"4"},{"disabled":true,"description":{"content":"<p>Only return assets with this administration unit ID.</p>\n","type":"text/plain"},"key":"administrationUnitId","value":"2"},{"description":{"content":"<p>Return the assets as tree (<code>format=tree</code>), list (<code>format=list</code>), map (<code>format=map</code>) or tree-map (<code>format=tree-map</code>).</p>\n","type":"text/plain"},"key":"format","value":"map"}],"variable":[]}},"response":[],"_postman_id":"29bb8170-1fc2-4c92-8518-34092a585793"},{"name":"Create asset","id":"bffee771-c10b-4d27-b8cb-d34a9970aa7d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"The Asset\",\r\n    \"locationId\": \"21:1270.4\",\r\n    \"addresses\": [\r\n        {\r\n            \"city\": \"The City\",\r\n            \"country\": \"My Country\",\r\n            \"street\": \"Main Street\",\r\n            \"streetNumber\": \"2\",\r\n            \"zip\": \"783928\"\r\n        }\r\n    ]\r\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/assets?updateNames=1","description":"<p>Creates a new asset, i. e. a new portfolio, economic unit, property or administration unit.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Kiel, Goethestraße 12\"</code></td>\n<td><code>\"\"</code></td>\n<td>See description below.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1240.2.4\"</code></td>\n<td><code>\"\"</code></td>\n<td>This is the economic unit ID, property ID and administration unit ID separated by dots.  <br />For example  <br />- Economic unit ID: `1000`  <br />- Property ID: `105`  <br />- Administration unit ID: `8`  <br />becomes `1000.105.8`.  <br />When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: `1000.105`.  <br />When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: `1000`.  <br />If the economic unit is part of a portfolio, the location ID is prefixed with the portfolio ID and a colon as separator. E. g.: <code>22:1000.105.8</code> for portfolio <code>22</code>.  <br />To create a portfolio, set the portfolio ID followed by a colon, e.g. `22:`.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[ { \"city\": \"The City\", \"country\": \"My Country\", \"street\": \"Main Street\", \"streetNumber\": \"2\", \"zip\": \"783928\" } ]</code></td>\n<td><code>[]</code></td>\n<td>(optional) An array of addresses.</td>\n</tr>\n<tr>\n<td><strong>customParameter</strong></td>\n<td>variant</td>\n<td><code>\"My custom parameter\"</code></td>\n<td></td>\n<td>(optional) Any other property is stored as is in database.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["assets"],"host":["https://core.sensaru.net/api/v1"],"query":[{"description":{"content":"<p>(optional) Default: <code>0</code>. Set to <code>1</code> to automatically set the economic's unit name and property name to the aggregated address.</p>\n","type":"text/plain"},"key":"updateNames","value":"1"}],"variable":[]}},"response":[],"_postman_id":"bffee771-c10b-4d27-b8cb-d34a9970aa7d"}],"id":"37d638ed-7c29-4f29-ae28-e217474a1190","_postman_id":"37d638ed-7c29-4f29-ae28-e217474a1190","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"business_partners","item":[{"name":"{businessPartnerId}","item":[{"name":"Get business partner","id":"e97d763b-58f7-4070-83e1-c5a3d377170b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/business_partners/:businessPartnerId","description":"<p>Returns a list of all assets, i. e. portfolios, economic units, properties and administration units.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result</strong></td>\n<td>array</td>\n<td></td>\n<td>See description below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"asset-object\">Asset object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>number</td>\n<td>1300</td>\n<td>The ID of the category.</td>\n</tr>\n<tr>\n<td><strong>label</strong></td>\n<td>string</td>\n<td>\"Wohngebäude &lt; 1000 m²\"</td>\n<td>A descriptive label of the category.</td>\n</tr>\n<tr>\n<td><strong>level</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td><code>1</code> =&gt; asset is a portfolio  <br /><code>2</code> =&gt; asset is an economic unit  <br /><code>3</code> =&gt; asset is a property  <br /><code>4</code> =&gt; asset is an administration unit</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1240.2.4\"</code></td>\n<td>This is the economic unit ID, property ID and administration unit ID separated by dots.  <br />For example  <br />- Economic unit ID: `1000`  <br />- Property ID: `105`  <br />- Administration unit ID: `8`  <br />becomes `1000.105.8`.  <br />When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: `1000.105`.  <br />When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: `1000`.  <br />If the economic unit is part of a portfolio, the location ID is prefixed with the portfolio ID and a colon as separator. E. g.: <code>22:1000.105.8</code> for portfolio <code>22</code>.</td>\n</tr>\n<tr>\n<td><strong>portfolioId</strong></td>\n<td>string</td>\n<td><code>\"22\"</code></td>\n<td>(optional) The portfolio ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>economicUnitId</strong></td>\n<td>string</td>\n<td><code>\"1240\"</code></td>\n<td>The economic unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>propertyId</strong></td>\n<td>string</td>\n<td><code>\"2\"</code></td>\n<td>The property ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>administrationUnitId</strong></td>\n<td>string</td>\n<td><code>\"4\"</code></td>\n<td>The administration unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[ { \"city\": \"The City\", \"country\": \"My Country\", \"street\": \"Main Street\", \"streetNumber\": \"2\", \"zip\": \"783928\" } ]</code></td>\n<td>(optional) An optional array of addresses. The array is only returned if it was created previously.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["business_partners",":businessPartnerId"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[{"id":"f19de09f-6746-4a55-8c24-a41d93325aed","type":"any","value":"","key":"businessPartnerId"}]}},"response":[],"_postman_id":"e97d763b-58f7-4070-83e1-c5a3d377170b"},{"name":"Update business partner","id":"6e1b9cee-3f67-46c5-99d9-5de61f97969d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n"}],"body":{"mode":"raw","raw":"{\r\n    \"crmId\": \"1234\",\r\n    \"erpId\": \"1234\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/business_partners/:businessPartnerId","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["business_partners",":businessPartnerId"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[{"id":"52d55448-3014-4559-9191-c303b306f334","type":"any","value":"","key":"businessPartnerId"}]}},"response":[],"_postman_id":"6e1b9cee-3f67-46c5-99d9-5de61f97969d"}],"id":"3a0527a2-115b-40ae-8d07-e8fd658262d4","_postman_id":"3a0527a2-115b-40ae-8d07-e8fd658262d4","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Create business partner","id":"4596e509-2b22-47db-9e8d-a57dc8488399","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"},{"key":"C1-SYSTEM-DISTRIBUTOR","value":"65490af0-ef62-11e9-847a-a58a2ea33526","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"Wohnungsbaugesellschaft ABC\",\r\n    \"subdomain\": \"wbg-abc\",\r\n    \"erpId\": \"123456\",\r\n    \"crmId\": \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/business_partners","description":"<p>Creates a new asset, i. e. a new portfolio, economic unit, property or administration unit.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Kiel, Goethestraße 12\"</code></td>\n<td>See description below.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1240.2.4\"</code></td>\n<td>This is the economic unit ID, property ID and administration unit ID separated by dots.  <br />For example  <br />- Economic unit ID: `1000`  <br />- Property ID: `105`  <br />- Administration unit ID: `8`  <br />becomes `1000.105.8`.  <br />When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: `1000.105`.  <br />When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: `1000`.  <br />If the economic unit is part of a portfolio, the location ID is prefixed with the portfolio ID and a colon as separator. E. g.: <code>22:1000.105.8</code> for portfolio <code>22</code>.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array  <br />  <br />  <br />  <br />  <br />  <br /></td>\n<td><code>[ { \"city\": \"The City\", \"country\": \"My Country\", \"street\": \"Main Street\", \"streetNumber\": \"2\", \"zip\": \"783928\" } ]</code></td>\n<td>(optional) An array of addresses.</td>\n</tr>\n<tr>\n<td><strong>customParameter</strong></td>\n<td>variant</td>\n<td><code>\"My custom parameter\"</code></td>\n<td>(optional) Any other property is stored as is in database.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["business_partners"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"4596e509-2b22-47db-9e8d-a57dc8488399"},{"name":"Delete business partner","id":"5f1d2f64-6de7-48e4-8333-624392c0b834","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"C1-BUSINESS-PARTNER","value":""},{"key":"C1-SYSTEM-DISTRIBUTOR","value":"65490af0-ef62-11e9-847a-a58a2ea33526","type":"text"}],"url":"https://core.sensaru.net/api/v1/business_partners/:businessPartnerId","description":"<p>Deletes a device. Currently only Sensaru S1 and G1 can be deleted.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["business_partners",":businessPartnerId"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[{"id":"2b341a80-bac8-477d-a84b-e6c9c236b8cd","type":"any","value":"","key":"businessPartnerId"}]}},"response":[{"id":"3a4ecfeb-d871-4ef9-9600-d3ef1c5cfb0b","name":"Returns success when the device was successfully deleted.","originalRequest":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"<API Key>","description":"Added as a part of security scheme: apikey"}],"url":{"raw":"{{baseUrl}}/devices/:deviceId","host":["{{baseUrl}}"],"path":["devices",":deviceId"],"variable":[{"key":"deviceId","value":"mollit","description":"(Required) The ID of the device as returned by `/devices`"}]}},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""},{"id":"3f2c8bcc-3392-4343-b606-ca956f9c7d17","name":"Returns one of the Sensaru Cloud REST error codes on error.","originalRequest":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"<API Key>","description":"Added as a part of security scheme: apikey"}],"url":{"raw":"{{baseUrl}}/devices/:deviceId","host":["{{baseUrl}}"],"path":["devices",":deviceId"],"variable":[{"key":"deviceId","value":"mollit","description":"(Required) The ID of the device as returned by `/devices`"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"5f1d2f64-6de7-48e4-8333-624392c0b834"},{"name":"Get business partners","id":"07ac22b4-5092-4585-a196-efc4cd0e1142","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-SYSTEM-DISTRIBUTOR","value":"65490af0-ef62-11e9-847a-a58a2ea33526","type":"text"}],"url":"https://core.sensaru.net/api/v1/business_partners","description":"<p>Returns a list of all assets, i. e. portfolios, economic units, properties and administration units.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result</strong></td>\n<td>array</td>\n<td></td>\n<td>See description below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"asset-object\">Asset object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>number</td>\n<td>1300</td>\n<td>The ID of the category.</td>\n</tr>\n<tr>\n<td><strong>label</strong></td>\n<td>string</td>\n<td>\"Wohngebäude &lt; 1000 m²\"</td>\n<td>A descriptive label of the category.</td>\n</tr>\n<tr>\n<td><strong>level</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td><code>1</code> =&gt; asset is a portfolio  <br /><code>2</code> =&gt; asset is an economic unit  <br /><code>3</code> =&gt; asset is a property  <br /><code>4</code> =&gt; asset is an administration unit</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1240.2.4\"</code></td>\n<td>This is the economic unit ID, property ID and administration unit ID separated by dots.  <br />For example  <br />- Economic unit ID: `1000`  <br />- Property ID: `105`  <br />- Administration unit ID: `8`  <br />becomes `1000.105.8`.  <br />When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: `1000.105`.  <br />When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: `1000`.  <br />If the economic unit is part of a portfolio, the location ID is prefixed with the portfolio ID and a colon as separator. E. g.: <code>22:1000.105.8</code> for portfolio <code>22</code>.</td>\n</tr>\n<tr>\n<td><strong>portfolioId</strong></td>\n<td>string</td>\n<td><code>\"22\"</code></td>\n<td>(optional) The portfolio ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>economicUnitId</strong></td>\n<td>string</td>\n<td><code>\"1240\"</code></td>\n<td>The economic unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>propertyId</strong></td>\n<td>string</td>\n<td><code>\"2\"</code></td>\n<td>The property ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>administrationUnitId</strong></td>\n<td>string</td>\n<td><code>\"4\"</code></td>\n<td>The administration unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[ { \"city\": \"The City\", \"country\": \"My Country\", \"street\": \"Main Street\", \"streetNumber\": \"2\", \"zip\": \"783928\" } ]</code></td>\n<td>(optional) An optional array of addresses. The array is only returned if it was created previously.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["business_partners"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"07ac22b4-5092-4585-a196-efc4cd0e1142"}],"id":"84b38a0b-3ebf-44a7-80c0-420ec2889023","_postman_id":"84b38a0b-3ebf-44a7-80c0-420ec2889023","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"building_categories","item":[{"name":"Get building categories","id":"3eb9b10b-53c3-4cee-9386-6a8c5f3594cb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/building_categories","description":"<p>Returns a list of all assets, i. e. portfolios, economic units, properties and administration units.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result</strong></td>\n<td>array</td>\n<td></td>\n<td>See description below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"asset-object\">Asset object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>number</td>\n<td>1300</td>\n<td>The ID of the category.</td>\n</tr>\n<tr>\n<td><strong>label</strong></td>\n<td>string</td>\n<td>\"Wohngebäude &lt; 1000 m²\"</td>\n<td>A descriptive label of the category.</td>\n</tr>\n<tr>\n<td><strong>level</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td><code>1</code> =&gt; asset is a portfolio  <br /><code>2</code> =&gt; asset is an economic unit  <br /><code>3</code> =&gt; asset is a property  <br /><code>4</code> =&gt; asset is an administration unit</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1240.2.4\"</code></td>\n<td>This is the economic unit ID, property ID and administration unit ID separated by dots.  <br />For example  <br />- Economic unit ID: `1000`  <br />- Property ID: `105`  <br />- Administration unit ID: `8`  <br />becomes `1000.105.8`.  <br />When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: `1000.105`.  <br />When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: `1000`.  <br />If the economic unit is part of a portfolio, the location ID is prefixed with the portfolio ID and a colon as separator. E. g.: <code>22:1000.105.8</code> for portfolio <code>22</code>.</td>\n</tr>\n<tr>\n<td><strong>portfolioId</strong></td>\n<td>string</td>\n<td><code>\"22\"</code></td>\n<td>(optional) The portfolio ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>economicUnitId</strong></td>\n<td>string</td>\n<td><code>\"1240\"</code></td>\n<td>The economic unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>propertyId</strong></td>\n<td>string</td>\n<td><code>\"2\"</code></td>\n<td>The property ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>administrationUnitId</strong></td>\n<td>string</td>\n<td><code>\"4\"</code></td>\n<td>The administration unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[ { \"city\": \"The City\", \"country\": \"My Country\", \"street\": \"Main Street\", \"streetNumber\": \"2\", \"zip\": \"783928\" } ]</code></td>\n<td>(optional) An optional array of addresses. The array is only returned if it was created previously.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["building_categories"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"3eb9b10b-53c3-4cee-9386-6a8c5f3594cb"}],"id":"3ede0533-ad40-4617-92d8-2361b8eb590b","_postman_id":"3ede0533-ad40-4617-92d8-2361b8eb590b","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"edge_client_groups","item":[{"name":"{edgeClientGroupId}","item":[{"name":"Delete edge client group","id":"a3399c5e-ddb2-4421-89ec-445286cf67f8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/edge_client_groups/:edgeClientGroupId","description":"<p>Deletes an asset.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["edge_client_groups",":edgeClientGroupId"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[{"id":"f923c14b-70f8-4fd9-b118-bd5fb6385ade","type":"any","value":"2644c9e2-f6b5-451e-a190-c3802722303b","key":"edgeClientGroupId"}]}},"response":[],"_postman_id":"a3399c5e-ddb2-4421-89ec-445286cf67f8"},{"name":"Get edge client group","id":"097d2131-987c-4948-819a-5263c6ccc278","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/edge_client_groups/:edgeClientGroupId","description":"<p>Returns a single asset. See <code>Get assets</code> for a description of the returned JSON.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["edge_client_groups",":edgeClientGroupId"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[{"id":"62f962e9-d14f-4b67-ab08-270c4847e58c","type":"any","value":"f6643497-69b1-4789-a1e2-dd688c2a1c39","key":"edgeClientGroupId"}]}},"response":[],"_postman_id":"097d2131-987c-4948-819a-5263c6ccc278"},{"name":"Update edge client group","id":"ef4e433b-7f66-4a29-8fde-71acdc4f0d7c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"My edge client group\",\r\n    \"acl\": {\"moduleAccess\": {\"*\": {\"global\": {\"event\": true, \"isAdmin\": true, \"read\": true, \"write\": true}}}, \"version\": 1}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/edge_client_groups/:edgeClientGroupId","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["edge_client_groups",":edgeClientGroupId"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[{"id":"1ed94fef-e88d-4618-9510-0d4e0b0acbcc","type":"any","value":"","key":"edgeClientGroupId"}]}},"response":[],"_postman_id":"ef4e433b-7f66-4a29-8fde-71acdc4f0d7c"}],"id":"c3b3cbc9-9424-4b71-9417-7c0bb274215a","_postman_id":"c3b3cbc9-9424-4b71-9417-7c0bb274215a","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get edge client groups","id":"69310a81-46e3-4c3a-a0b0-4bce523ad183","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n"}],"url":"https://core.sensaru.net/api/v1/edge_client_groups","description":"<p>Returns a list of all assets, i. e. portfolios, economic units, properties and administration units.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.assets</strong></td>\n<td>array</td>\n<td></td>\n<td>See description below.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"1270.2.4\"</code></td>\n<td>The key to pass to the query parameter <code>offset</code> to get the next page. <code>nextKey</code> is set to an empty string when there is no more data.</td>\n</tr>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"asset-object\">Asset object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td></td>\n<td>The ID of the asset. Use this ID whereever an asset ID is required as part of the path.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td>\"Kiel, Goethestraße 12\"</td>\n<td>The user-set name of the asset.</td>\n</tr>\n<tr>\n<td><strong>level</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td><code>1</code> =&gt; asset is a portfolio  <br /><code>2</code> =&gt; asset is an economic unit  <br /><code>3</code> =&gt; asset is a property  <br /><code>4</code> =&gt; asset is an administration unit</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1240.2.4\"</code></td>\n<td>This is the economic unit ID, property ID and administration unit ID separated by dots.  <br />For example  <br />- Economic unit ID: `1000`  <br />- Property ID: `105`  <br />- Administration unit ID: `8`  <br />becomes `1000.105.8`.  <br />When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: `1000.105`.  <br />When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: `1000`.  <br />If the economic unit is part of a portfolio, the location ID is prefixed with the portfolio ID and a colon as separator. E. g.: <code>22:1000.105.8</code> for portfolio <code>22</code>.</td>\n</tr>\n<tr>\n<td><strong>portfolioId</strong></td>\n<td>string</td>\n<td><code>\"22\"</code></td>\n<td>(optional) The portfolio ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>economicUnitId</strong></td>\n<td>string</td>\n<td><code>\"1240\"</code></td>\n<td>The economic unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>propertyId</strong></td>\n<td>string</td>\n<td><code>\"2\"</code></td>\n<td>The property ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>administrationUnitId</strong></td>\n<td>string</td>\n<td><code>\"4\"</code></td>\n<td>The administration unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array<br /><br /></td>\n<td><code>[ { \"city\": \"The City\", \"country\": \"My Country\", \"street\": \"Main Street\", \"streetNumber\": \"2\", \"zip\": \"783928\" } ]</code></td>\n<td>(optional) An optional array of addresses. The array is only returned if it was created previously.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["edge_client_groups"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"69310a81-46e3-4c3a-a0b0-4bce523ad183"},{"name":"Create edge client group","id":"66861edb-e116-4c39-a1d0-f79ddbd1a7cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner ID to send the request for.</p>\n","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"My edge client group\",\r\n    \"acl\": {\"moduleAccess\": {\"*\": {\"global\": {\"event\": true, \"isAdmin\": true, \"read\": true, \"write\": true}}}, \"version\": 1}\r\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/edge_client_groups","description":"<p>Creates a new asset, i. e. a new portfolio, economic unit, property or administration unit.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Kiel, Goethestraße 12\"</code></td>\n<td><code>\"\"</code></td>\n<td>See description below.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1240.2.4\"</code></td>\n<td><code>\"\"</code></td>\n<td>This is the economic unit ID, property ID and administration unit ID separated by dots.  <br />For example  <br />- Economic unit ID: `1000`  <br />- Property ID: `105`  <br />- Administration unit ID: `8`  <br />becomes `1000.105.8`.  <br />When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: `1000.105`.  <br />When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: `1000`.  <br />If the economic unit is part of a portfolio, the location ID is prefixed with the portfolio ID and a colon as separator. E. g.: <code>22:1000.105.8</code> for portfolio <code>22</code>.  <br />To create a portfolio, set the portfolio ID followed by a colon, e.g. `22:`.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[ { \"city\": \"The City\", \"country\": \"My Country\", \"street\": \"Main Street\", \"streetNumber\": \"2\", \"zip\": \"783928\" } ]</code></td>\n<td><code>[]</code></td>\n<td>(optional) An array of addresses.</td>\n</tr>\n<tr>\n<td><strong>customParameter</strong></td>\n<td>variant</td>\n<td><code>\"My custom parameter\"</code></td>\n<td></td>\n<td>(optional) Any other property is stored as is in database.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["edge_client_groups"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"66861edb-e116-4c39-a1d0-f79ddbd1a7cf"}],"id":"4145ebb7-9c0d-4f6f-86a6-a6957b8fbe90","_postman_id":"4145ebb7-9c0d-4f6f-86a6-a6957b8fbe90","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get modules","id":"2f198ab6-4e2c-4b54-9096-e1dede97048c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n"}],"url":"https://core.sensaru.net/api/v1/modules","description":"<p>Returns a list of all assets, i. e. portfolios, economic units, properties and administration units.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.assets</strong></td>\n<td>array</td>\n<td></td>\n<td>See description below.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"1270.2.4\"</code></td>\n<td>The key to pass to the query parameter <code>offset</code> to get the next page. <code>nextKey</code> is set to an empty string when there is no more data.</td>\n</tr>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"asset-object\">Asset object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td></td>\n<td>The ID of the asset. Use this ID whereever an asset ID is required as part of the path.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td>\"Kiel, Goethestraße 12\"</td>\n<td>The user-set name of the asset.</td>\n</tr>\n<tr>\n<td><strong>level</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td><code>1</code> =&gt; asset is a portfolio  <br /><code>2</code> =&gt; asset is an economic unit  <br /><code>3</code> =&gt; asset is a property  <br /><code>4</code> =&gt; asset is an administration unit</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1240.2.4\"</code></td>\n<td>This is the economic unit ID, property ID and administration unit ID separated by dots.  <br />For example  <br />- Economic unit ID: `1000`  <br />- Property ID: `105`  <br />- Administration unit ID: `8`  <br />becomes `1000.105.8`.  <br />When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: `1000.105`.  <br />When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: `1000`.  <br />If the economic unit is part of a portfolio, the location ID is prefixed with the portfolio ID and a colon as separator. E. g.: <code>22:1000.105.8</code> for portfolio <code>22</code>.</td>\n</tr>\n<tr>\n<td><strong>portfolioId</strong></td>\n<td>string</td>\n<td><code>\"22\"</code></td>\n<td>(optional) The portfolio ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>economicUnitId</strong></td>\n<td>string</td>\n<td><code>\"1240\"</code></td>\n<td>The economic unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>propertyId</strong></td>\n<td>string</td>\n<td><code>\"2\"</code></td>\n<td>The property ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>administrationUnitId</strong></td>\n<td>string</td>\n<td><code>\"4\"</code></td>\n<td>The administration unit ID part of the location ID.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array<br /><br /></td>\n<td><code>[ { \"city\": \"The City\", \"country\": \"My Country\", \"street\": \"Main Street\", \"streetNumber\": \"2\", \"zip\": \"783928\" } ]</code></td>\n<td>(optional) An optional array of addresses. The array is only returned if it was created previously.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["modules"],"host":["https://core.sensaru.net/api/v1"],"query":[],"variable":[]}},"response":[],"_postman_id":"2f198ab6-4e2c-4b54-9096-e1dede97048c"}],"id":"91011553-a961-42b1-a735-2ca6c4fb8269","_postman_id":"91011553-a961-42b1-a735-2ca6c4fb8269","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"c1-device-management","item":[{"name":"devices","item":[{"name":"{deviceId}","item":[{"name":"data-points","item":[{"name":"{dataPointId}","item":[{"name":"log","item":[{"name":"Get log","id":"99350c4c-a6c7-43c3-ac38-c9e6654310ce","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId/log?timeFormat=iso-8601&convertToNumber=true&aggregate=15m&dateFrom=1682892000&dateTo=1685570400&limit=1000","description":"<p>Returns the data point log (time series) for a specific data point.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.log</strong></td>\n<td>array</td>\n<td><code>[[1700000000, 22.5], ...]</code></td>\n<td>Array of <code>[timestamp, value]</code> pairs. Timestamp format depends on <code>timeFormat</code> query parameter.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","data-points",":dataPointId","log"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) <code>unix-timestamp-seconds</code> (default), <code>unix-timestamp-milliseconds</code>, or <code>iso-8601</code>.</p>\n","type":"text/plain"},"key":"timeFormat","value":"iso-8601"},{"disabled":true,"description":{"content":"<p>(optional) <code>raw</code> (default) or <code>localized</code> (formatted with units).</p>\n","type":"text/plain"},"key":"dataPointFormat","value":"raw"},{"description":{"content":"<p>(optional) Convert boolean/array values to numbers.</p>\n","type":"text/plain"},"key":"convertToNumber","value":"true"},{"description":{"content":"<p>(optional) Aggregation: <code>none</code> (default), <code>15m</code>, <code>hour</code>, <code>day</code>, <code>all</code>.</p>\n","type":"text/plain"},"key":"aggregate","value":"15m"},{"description":{"content":"<p>(optional) Start time as Unix timestamp in seconds.</p>\n","type":"text/plain"},"key":"dateFrom","value":"1682892000"},{"description":{"content":"<p>(optional) End time as Unix timestamp in seconds.</p>\n","type":"text/plain"},"key":"dateTo","value":"1685570400"},{"disabled":true,"description":{"content":"<p>(optional) Sort direction. Default: <code>true</code>.</p>\n","type":"text/plain"},"key":"ascending","value":"true"},{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–10000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"1000"},{"disabled":true,"description":{"content":"<p>(optional) Language code for localized formatting.</p>\n","type":"text/plain"},"key":"lang","value":"de"}],"variable":[{"id":"3dac6cbd-12ca-4673-b92b-bbd57ccd924f","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"},{"id":"8e9dfb8d-64c8-4a37-87d3-ecde7eb3b71f","description":{"content":"<p>(required) The data point UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"dataPointId"}]}},"response":[{"id":"e6ea977f-1edd-4f15-99d4-11132df6c895","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId/log?timeFormat=iso-8601&convertToNumber=true&aggregate=15m&dateFrom=1682892000&dateTo=1685570400&limit=1000","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","data-points",":dataPointId","log"],"query":[{"key":"timeFormat","value":"iso-8601","description":"(optional) `unix-timestamp-seconds` (default), `unix-timestamp-milliseconds`, or `iso-8601`."},{"key":"dataPointFormat","value":"raw","description":"(optional) `raw` (default) or `localized` (formatted with units).","disabled":true},{"key":"convertToNumber","value":"true","description":"(optional) Convert boolean/array values to numbers."},{"key":"aggregate","value":"15m","description":"(optional) Aggregation: `none` (default), `15m`, `hour`, `day`, `all`."},{"key":"dateFrom","value":"1682892000","description":"(optional) Start time as Unix timestamp in seconds."},{"key":"dateTo","value":"1685570400","description":"(optional) End time as Unix timestamp in seconds."},{"key":"ascending","value":"true","description":"(optional) Sort direction. Default: `true`.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"1000","description":"(optional) Page size (1–10000). Default: `100`."},{"key":"lang","value":"de","description":"(optional) Language code for localized formatting.","disabled":true}],"variable":[{"id":"3dac6cbd-12ca-4673-b92b-bbd57ccd924f","key":"deviceId","value":"","description":"(required) The device UUID."},{"id":"8e9dfb8d-64c8-4a37-87d3-ecde7eb3b71f","key":"dataPointId","value":"","description":"(required) The data point UUID."}]},"description":"Returns the data point log (time series) for a specific data point.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.log** | array | `[[1700000000, 22.5], ...]` | Array of `[timestamp, value]` pairs. Timestamp format depends on `timeFormat` query parameter. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"log\": [\n      [\n        1700000000,\n        22.5\n      ],\n      [\n        1700003600,\n        23.1\n      ],\n      [\n        1700007200,\n        24.2\n      ]\n    ],\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"},{"id":"544ed9de-bf58-4baf-baa9-ad708fa27a6f","name":"Success (timeFormat=iso-8601)","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId/log?timeFormat=iso-8601&convertToNumber=true&aggregate=15m&dateFrom=1682892000&dateTo=1685570400&limit=1000","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","data-points",":dataPointId","log"],"query":[{"key":"timeFormat","value":"iso-8601","description":"(optional) `unix-timestamp-seconds` (default), `unix-timestamp-milliseconds`, or `iso-8601`."},{"key":"dataPointFormat","value":"raw","description":"(optional) `raw` (default) or `localized` (formatted with units).","disabled":true},{"key":"convertToNumber","value":"true","description":"(optional) Convert boolean/array values to numbers."},{"key":"aggregate","value":"15m","description":"(optional) Aggregation: `none` (default), `15m`, `hour`, `day`, `all`."},{"key":"dateFrom","value":"1682892000","description":"(optional) Start time as Unix timestamp in seconds."},{"key":"dateTo","value":"1685570400","description":"(optional) End time as Unix timestamp in seconds."},{"key":"ascending","value":"true","description":"(optional) Sort direction. Default: `true`.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"1000","description":"(optional) Page size (1–10000). Default: `100`."},{"key":"lang","value":"de","description":"(optional) Language code for localized formatting.","disabled":true}],"variable":[{"id":"3dac6cbd-12ca-4673-b92b-bbd57ccd924f","key":"deviceId","value":"","description":"(required) The device UUID."},{"id":"8e9dfb8d-64c8-4a37-87d3-ecde7eb3b71f","key":"dataPointId","value":"","description":"(required) The data point UUID."}]},"description":"Returns the data point log (time series) for a specific data point.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.log** | array | `[[1700000000, 22.5], ...]` | Array of `[timestamp, value]` pairs. Timestamp format depends on `timeFormat` query parameter. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"log\": [\n      [\n        \"2024-11-15T10:00:00.000\",\n        22.5\n      ],\n      [\n        \"2024-11-15T11:00:00.000\",\n        23.1\n      ]\n    ],\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"}],"_postman_id":"99350c4c-a6c7-43c3-ac38-c9e6654310ce"},{"name":"Add log entries","id":"1dde3a00-e35d-41a8-bee8-c63538e7e60b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"entries\": [\n    [\n      1682892000,\n      21.5\n    ],\n    [\n      1682892120,\n      21.6\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId/log?timeZone=Europe/Berlin&publishLast=true","description":"<p>Creates one or more data point log entries.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<p>The body accepts an object with an <code>entries</code> array, or a flat array directly.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>entries</strong></td>\n<td>array</td>\n<td><code>[[1682892000, 21.5], [1682892120, 21.6]]</code></td>\n<td></td>\n<td>(required) Array of <code>[utcTimestamp, value]</code> pairs. <code>utcTimestamp</code> is a Unix timestamp in seconds (UTC). <code>value</code> can be any type (number, boolean, string).</td>\n</tr>\n</tbody>\n</table>\n</div><p>Alternatively, the array can be passed directly without the <code>entries</code> wrapper:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[[1682892000, 21.5], [1682892120, 21.6]]\n</code></pre>\n<p>A legacy single-entry object format is also supported:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>dateUtc</strong></td>\n<td>integer</td>\n<td><code>1682892000</code></td>\n<td></td>\n<td>(required) Unix timestamp in seconds (UTC).</td>\n</tr>\n<tr>\n<td><strong>dateLocal</strong></td>\n<td>integer</td>\n<td><code>1682899200</code></td>\n<td></td>\n<td>(required) Unix timestamp in seconds (local time).</td>\n</tr>\n<tr>\n<td><strong>value</strong></td>\n<td>variant</td>\n<td><code>21.5</code></td>\n<td></td>\n<td>(required) The data point value.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","data-points",":dataPointId","log"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Timezone for local time calculation. Default: <code>UTC</code>.</p>\n","type":"text/plain"},"key":"timeZone","value":"Europe/Berlin"},{"description":{"content":"<p>(optional) Publish the last entry as current value. Default: <code>false</code>.</p>\n","type":"text/plain"},"key":"publishLast","value":"true"}],"variable":[{"id":"87367cb2-4929-4ded-8e3c-20091e00f819","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"},{"id":"e209a147-e053-4f98-9778-2988c43a7ee7","description":{"content":"<p>(required) The data point UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"dataPointId"}]}},"response":[{"id":"1f185038-f39a-49c5-bf1f-92831b00608e","name":"Success","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"entries\": [\n    [\n      1682892000,\n      21.5\n    ],\n    [\n      1682892120,\n      21.6\n    ]\n  ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId/log?timeZone=Europe/Berlin&publishLast=true","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","data-points",":dataPointId","log"],"query":[{"key":"timeZone","value":"Europe/Berlin","description":"(optional) Timezone for local time calculation. Default: `UTC`."},{"key":"publishLast","value":"true","description":"(optional) Publish the last entry as current value. Default: `false`."}],"variable":[{"id":"87367cb2-4929-4ded-8e3c-20091e00f819","key":"deviceId","value":"","description":"(required) The device UUID."},{"id":"e209a147-e053-4f98-9778-2988c43a7ee7","key":"dataPointId","value":"","description":"(required) The data point UUID."}]},"description":"Creates one or more data point log entries.\n\n#### Request body JSON\n\nThe body accepts an object with an `entries` array, or a flat array directly.\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **entries** | array | `[[1682892000, 21.5], [1682892120, 21.6]]` | | (required) Array of `[utcTimestamp, value]` pairs. `utcTimestamp` is a Unix timestamp in seconds (UTC). `value` can be any type (number, boolean, string). |\n\nAlternatively, the array can be passed directly without the `entries` wrapper:\n```json\n[[1682892000, 21.5], [1682892120, 21.6]]\n```\n\nA legacy single-entry object format is also supported:\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **dateUtc** | integer | `1682892000` | | (required) Unix timestamp in seconds (UTC). |\n| **dateLocal** | integer | `1682899200` | | (required) Unix timestamp in seconds (local time). |\n| **value** | variant | `21.5` | | (required) The data point value. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"1dde3a00-e35d-41a8-bee8-c63538e7e60b"},{"name":"Delete log entry","id":"1d2d381e-1242-4746-bf74-410c3ce816eb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId/log/:logEntryId","description":"<p>Deletes a single data point log entry identified by its local and UTC timestamps in milliseconds. The path format is <code>{localTimeMs}_{utcTimeMs}</code>.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","data-points",":dataPointId","log",":logEntryId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"fa83f6d2-aff8-48e2-b7ef-ad6f824bc061","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"},{"id":"231e98fe-0f2c-47fe-a5e3-606623025c66","description":{"content":"<p>(required) The data point UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"dataPointId"},{"id":"40b08555-7d08-4654-a8f4-465fa6e988b8","description":{"content":"<p>(required) Format: <code>{localTimeMs}_{utcTimeMs}</code>. Both values in milliseconds.</p>\n","type":"text/plain"},"type":"any","value":"1682895600000_1682888400000","key":"logEntryId"}]}},"response":[{"id":"c2f02c40-c28b-4ce2-9df3-9ceaab5e8c1f","name":"Success","originalRequest":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId/log/:logEntryId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","data-points",":dataPointId","log",":logEntryId"],"variable":[{"id":"fa83f6d2-aff8-48e2-b7ef-ad6f824bc061","key":"deviceId","value":"","description":"(required) The device UUID."},{"id":"231e98fe-0f2c-47fe-a5e3-606623025c66","key":"dataPointId","value":"","description":"(required) The data point UUID."},{"id":"40b08555-7d08-4654-a8f4-465fa6e988b8","key":"logEntryId","value":"1682895600000_1682888400000","description":"(required) Format: `{localTimeMs}_{utcTimeMs}`. Both values in milliseconds."}]},"description":"Deletes a single data point log entry identified by its local and UTC timestamps in milliseconds. The path format is `{localTimeMs}_{utcTimeMs}`.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"1d2d381e-1242-4746-bf74-410c3ce816eb"}],"id":"de37f21d-54c0-4118-a917-0ae6b01a02c8","_postman_id":"de37f21d-54c0-4118-a917-0ae6b01a02c8","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get data point","id":"d6e7cb11-0d8d-4002-94f2-1d38d5396834","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId?lang=en-US","description":"<p>Returns a single data point by ID.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is a single data point object.</p>\n<h5 id=\"data-point-object\">Data point object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"dp-uuid\"</code></td>\n<td>Data point UUID.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"bp-uuid\"</code></td>\n<td>Owning business partner.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Hierarchical location.</td>\n</tr>\n<tr>\n<td><strong>disabled</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether data point is disabled.</td>\n</tr>\n<tr>\n<td><strong>label</strong></td>\n<td>string</td>\n<td><code>\"Supply Temperature\"</code></td>\n<td>Localized display name.</td>\n</tr>\n<tr>\n<td><strong>nativeId</strong></td>\n<td>string</td>\n<td><code>\"S108AABB.supplyTemperature\"</code></td>\n<td>Internal native identifier (<code>serial.name</code>).</td>\n</tr>\n<tr>\n<td><strong>parentId</strong></td>\n<td>UUID</td>\n<td><code>\"device-uuid\"</code></td>\n<td>Parent device UUID.</td>\n</tr>\n<tr>\n<td><strong>type</strong></td>\n<td>string</td>\n<td><code>\"double\"</code></td>\n<td>Value type (<code>double</code>, <code>boolean</code>, <code>string</code>, <code>array</code>).</td>\n</tr>\n<tr>\n<td><strong>aggregation</strong></td>\n<td>string</td>\n<td><code>\"average\"</code></td>\n<td>Aggregation method (<code>average</code>, <code>last</code>, <code>sum</code>).</td>\n</tr>\n<tr>\n<td><strong>role</strong></td>\n<td>integer</td>\n<td><code>201014</code></td>\n<td>Numeric role ID.</td>\n</tr>\n<tr>\n<td><strong>roleName</strong></td>\n<td>string</td>\n<td><code>\"Supply Temperature\"</code></td>\n<td>Localized role name.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"heating\"]</code></td>\n<td>User-defined tags.</td>\n</tr>\n<tr>\n<td><strong>unit</strong></td>\n<td>string</td>\n<td><code>\"°C\"</code></td>\n<td>Display unit.</td>\n</tr>\n<tr>\n<td><strong>unitCode</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td>Numeric unit code.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Custom metadata.</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td>Parent device serial number.</td>\n</tr>\n<tr>\n<td><strong>isSensaruDevice</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether parent is a Sensaru device.</td>\n</tr>\n<tr>\n<td><strong>updatedAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>value</strong></td>\n<td>variant</td>\n<td><code>45.3</code></td>\n<td>(optional) Last known value.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","data-points",":dataPointId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"}],"variable":[{"id":"eaa037b0-2832-4d1a-b527-9f105c2fbac8","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"},{"id":"072712ab-b456-45ec-9a1b-30fd9ca63bb3","description":{"content":"<p>(required) The data point UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"dataPointId"}]}},"response":[{"id":"bb248ecc-b05f-4178-b31c-b2d27a202bdd","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","data-points",":dataPointId"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."}],"variable":[{"id":"eaa037b0-2832-4d1a-b527-9f105c2fbac8","key":"deviceId","value":"","description":"(required) The device UUID."},{"id":"072712ab-b456-45ec-9a1b-30fd9ca63bb3","key":"dataPointId","value":"","description":"(required) The data point UUID."}]},"description":"Returns a single data point by ID.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is a single data point object.\n\n\n##### Data point object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"dp-uuid\"` | Data point UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Owning business partner. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical location. |\n| **disabled** | boolean | `false` | Whether data point is disabled. |\n| **label** | string | `\"Supply Temperature\"` | Localized display name. |\n| **nativeId** | string | `\"S108AABB.supplyTemperature\"` | Internal native identifier (`serial.name`). |\n| **parentId** | UUID | `\"device-uuid\"` | Parent device UUID. |\n| **type** | string | `\"double\"` | Value type (`double`, `boolean`, `string`, `array`). |\n| **aggregation** | string | `\"average\"` | Aggregation method (`average`, `last`, `sum`). |\n| **role** | integer | `201014` | Numeric role ID. |\n| **roleName** | string | `\"Supply Temperature\"` | Localized role name. |\n| **tags** | array | `[\"heating\"]` | User-defined tags. |\n| **unit** | string | `\"°C\"` | Display unit. |\n| **unitCode** | integer | `2` | Numeric unit code. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Parent device serial number. |\n| **isSensaruDevice** | boolean | `true` | Whether parent is a Sensaru device. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **value** | variant | `45.3` | (optional) Last known value. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"id\": \"dp-uuid-1\",\n    \"businessPartnerId\": \"bp-uuid\",\n    \"locationId\": \"1:WE-01.100\",\n    \"disabled\": false,\n    \"label\": \"Supply Temperature\",\n    \"nativeId\": \"S108AABB.smoothedSupplyTemperature\",\n    \"parentId\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n    \"type\": \"double\",\n    \"aggregation\": \"average\",\n    \"role\": 201014,\n    \"roleName\": \"Supply Temperature\",\n    \"tags\": [],\n    \"unit\": \"\\u00b0C\",\n    \"unitCode\": 2,\n    \"metadata\": {},\n    \"serialNumber\": \"S108AABBCCDD\",\n    \"isSensaruDevice\": true,\n    \"updatedAt\": 1700000000,\n    \"value\": 45.3\n  }\n}"},{"id":"5f488e72-a6a7-4103-933e-8a8b0fa38507","name":"Not found","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","data-points",":dataPointId"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."}],"variable":[{"id":"eaa037b0-2832-4d1a-b527-9f105c2fbac8","key":"deviceId","value":"","description":"(required) The device UUID."},{"id":"072712ab-b456-45ec-9a1b-30fd9ca63bb3","key":"dataPointId","value":"","description":"(required) The data point UUID."}]},"description":"Returns a single data point by ID.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is a single data point object.\n\n\n##### Data point object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"dp-uuid\"` | Data point UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Owning business partner. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical location. |\n| **disabled** | boolean | `false` | Whether data point is disabled. |\n| **label** | string | `\"Supply Temperature\"` | Localized display name. |\n| **nativeId** | string | `\"S108AABB.supplyTemperature\"` | Internal native identifier (`serial.name`). |\n| **parentId** | UUID | `\"device-uuid\"` | Parent device UUID. |\n| **type** | string | `\"double\"` | Value type (`double`, `boolean`, `string`, `array`). |\n| **aggregation** | string | `\"average\"` | Aggregation method (`average`, `last`, `sum`). |\n| **role** | integer | `201014` | Numeric role ID. |\n| **roleName** | string | `\"Supply Temperature\"` | Localized role name. |\n| **tags** | array | `[\"heating\"]` | User-defined tags. |\n| **unit** | string | `\"°C\"` | Display unit. |\n| **unitCode** | integer | `2` | Numeric unit code. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Parent device serial number. |\n| **isSensaruDevice** | boolean | `true` | Whether parent is a Sensaru device. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **value** | variant | `45.3` | (optional) Last known value. |"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"not_found\",\n  \"description\": \"The requested resource was not found.\"\n}"}],"_postman_id":"d6e7cb11-0d8d-4002-94f2-1d38d5396834"},{"name":"Replace data point metadata","id":"8d065a73-f1ea-4bf8-8ed0-e015dd2c1bfa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"tags\": [\n    \"energy\",\n    \"heating\"\n  ],\n  \"customField\": \"value\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId","description":"<p>Replaces the data point's metadata and tags entirely. Tags are cleared first, then set from the <code>tags</code> array in the body. All other body fields become the new metadata object.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"energy\", \"heating\"]</code></td>\n<td><code>[]</code></td>\n<td>(optional) Replaces all existing tags. Existing tags are cleared first. Non-empty strings only.</td>\n</tr>\n<tr>\n<td><strong>customProperty</strong></td>\n<td>variant</td>\n<td><code>\"My custom value\"</code></td>\n<td></td>\n<td>(optional) Any other property is stored as metadata. The entire object (minus <code>tags</code>) becomes the new metadata, replacing any previous metadata.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","data-points",":dataPointId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"d2e05de7-918c-41a9-811c-9e57a1f63f24","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"},{"id":"19cebbc5-c80a-4d96-9241-c332a0725bb4","description":{"content":"<p>(required) The data point UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"dataPointId"}]}},"response":[{"id":"5fd66525-ea8a-46bd-a712-371831c74021","name":"Success","originalRequest":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"tags\": [\n    \"energy\",\n    \"heating\"\n  ],\n  \"customField\": \"value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","data-points",":dataPointId"],"variable":[{"id":"d2e05de7-918c-41a9-811c-9e57a1f63f24","key":"deviceId","value":"","description":"(required) The device UUID."},{"id":"19cebbc5-c80a-4d96-9241-c332a0725bb4","key":"dataPointId","value":"","description":"(required) The data point UUID."}]},"description":"Replaces the data point's metadata and tags entirely. Tags are cleared first, then set from the `tags` array in the body. All other body fields become the new metadata object.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **tags** | array | `[\"energy\", \"heating\"]` | `[]` | (optional) Replaces all existing tags. Existing tags are cleared first. Non-empty strings only. |\n| **customProperty** | variant | `\"My custom value\"` | | (optional) Any other property is stored as metadata. The entire object (minus `tags`) becomes the new metadata, replacing any previous metadata. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"8d065a73-f1ea-4bf8-8ed0-e015dd2c1bfa"},{"name":"Update data point metadata","id":"768c9578-71a5-4f8d-b85a-9da71c0f3ba4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"tags\": [\n    \"newTag\"\n  ],\n  \"customField\": \"value\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId","description":"<p>Partially updates data point metadata. Tags are added to the existing set (additive). Other fields are merged into existing metadata.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"newTag\"]</code></td>\n<td><code>[]</code></td>\n<td>(optional) Tags to add to the existing tag set (additive, does not remove existing tags). Non-empty strings only.</td>\n</tr>\n<tr>\n<td><strong>customProperty</strong></td>\n<td>variant</td>\n<td><code>\"My custom value\"</code></td>\n<td></td>\n<td>(optional) Any other property is merged into existing metadata. Only provided fields are updated; unmentioned fields are preserved.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","data-points",":dataPointId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"975ac05c-559f-4275-9ff0-c3ba02fcc5ed","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"},{"id":"8acd57b8-1abc-45c1-9b37-64e2b1b8fdca","description":{"content":"<p>(required) The data point UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"dataPointId"}]}},"response":[{"id":"95a32bdf-75fb-460d-9a22-ada0d35c390e","name":"Success","originalRequest":{"method":"PATCH","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"tags\": [\n    \"newTag\"\n  ],\n  \"customField\": \"value\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points/:dataPointId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","data-points",":dataPointId"],"variable":[{"id":"975ac05c-559f-4275-9ff0-c3ba02fcc5ed","key":"deviceId","value":"","description":"(required) The device UUID."},{"id":"8acd57b8-1abc-45c1-9b37-64e2b1b8fdca","key":"dataPointId","value":"","description":"(required) The data point UUID."}]},"description":"Partially updates data point metadata. Tags are added to the existing set (additive). Other fields are merged into existing metadata.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **tags** | array | `[\"newTag\"]` | `[]` | (optional) Tags to add to the existing tag set (additive, does not remove existing tags). Non-empty strings only. |\n| **customProperty** | variant | `\"My custom value\"` | | (optional) Any other property is merged into existing metadata. Only provided fields are updated; unmentioned fields are preserved. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"768c9578-71a5-4f8d-b85a-9da71c0f3ba4"}],"id":"c7f30fcf-6ea3-403d-b5b0-fbd7c78dffdc","_postman_id":"c7f30fcf-6ea3-403d-b5b0-fbd7c78dffdc","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get device data points","id":"c62c9888-1d66-419f-95a4-d9204a6e1ce5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points?lang=en-US&limit=100","description":"<p>Returns data points for a specific device.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of data point objects.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"data-point-object\">Data point object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"dp-uuid\"</code></td>\n<td>Data point UUID.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"bp-uuid\"</code></td>\n<td>Owning business partner.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Hierarchical location.</td>\n</tr>\n<tr>\n<td><strong>disabled</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether data point is disabled.</td>\n</tr>\n<tr>\n<td><strong>label</strong></td>\n<td>string</td>\n<td><code>\"Supply Temperature\"</code></td>\n<td>Localized display name.</td>\n</tr>\n<tr>\n<td><strong>nativeId</strong></td>\n<td>string</td>\n<td><code>\"S108AABB.supplyTemperature\"</code></td>\n<td>Internal native identifier (<code>serial.name</code>).</td>\n</tr>\n<tr>\n<td><strong>parentId</strong></td>\n<td>UUID</td>\n<td><code>\"device-uuid\"</code></td>\n<td>Parent device UUID.</td>\n</tr>\n<tr>\n<td><strong>type</strong></td>\n<td>string</td>\n<td><code>\"double\"</code></td>\n<td>Value type (<code>double</code>, <code>boolean</code>, <code>string</code>, <code>array</code>).</td>\n</tr>\n<tr>\n<td><strong>aggregation</strong></td>\n<td>string</td>\n<td><code>\"average\"</code></td>\n<td>Aggregation method (<code>average</code>, <code>last</code>, <code>sum</code>).</td>\n</tr>\n<tr>\n<td><strong>role</strong></td>\n<td>integer</td>\n<td><code>201014</code></td>\n<td>Numeric role ID.</td>\n</tr>\n<tr>\n<td><strong>roleName</strong></td>\n<td>string</td>\n<td><code>\"Supply Temperature\"</code></td>\n<td>Localized role name.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"heating\"]</code></td>\n<td>User-defined tags.</td>\n</tr>\n<tr>\n<td><strong>unit</strong></td>\n<td>string</td>\n<td><code>\"°C\"</code></td>\n<td>Display unit.</td>\n</tr>\n<tr>\n<td><strong>unitCode</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td>Numeric unit code.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Custom metadata.</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td>Parent device serial number.</td>\n</tr>\n<tr>\n<td><strong>isSensaruDevice</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether parent is a Sensaru device.</td>\n</tr>\n<tr>\n<td><strong>updatedAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>value</strong></td>\n<td>variant</td>\n<td><code>45.3</code></td>\n<td>(optional) Last known value.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","data-points"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Sort field. Default: <code>id</code>.</p>\n","type":"text/plain"},"key":"orderBy","value":"id"},{"disabled":true,"description":{"content":"<p>(optional) Sort direction. Default: <code>true</code>.</p>\n","type":"text/plain"},"key":"ascending","value":"true"},{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–1000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"100"}],"variable":[{"id":"c26c1f51-5e5e-4b19-9070-eaed2afa107f","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"}]}},"response":[{"id":"8a4314e7-7318-4140-a059-1aaaa3cb2700","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/data-points?lang=en-US&limit=100","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","data-points"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."},{"key":"orderBy","value":"id","description":"(optional) Sort field. Default: `id`.","disabled":true},{"key":"ascending","value":"true","description":"(optional) Sort direction. Default: `true`.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"100","description":"(optional) Page size (1–1000). Default: `100`."}],"variable":[{"id":"c26c1f51-5e5e-4b19-9070-eaed2afa107f","key":"deviceId","value":"","description":"(required) The device UUID."}]},"description":"Returns data points for a specific device.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result** | array | | Array of data point objects. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |\n\n##### Data point object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"dp-uuid\"` | Data point UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Owning business partner. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical location. |\n| **disabled** | boolean | `false` | Whether data point is disabled. |\n| **label** | string | `\"Supply Temperature\"` | Localized display name. |\n| **nativeId** | string | `\"S108AABB.supplyTemperature\"` | Internal native identifier (`serial.name`). |\n| **parentId** | UUID | `\"device-uuid\"` | Parent device UUID. |\n| **type** | string | `\"double\"` | Value type (`double`, `boolean`, `string`, `array`). |\n| **aggregation** | string | `\"average\"` | Aggregation method (`average`, `last`, `sum`). |\n| **role** | integer | `201014` | Numeric role ID. |\n| **roleName** | string | `\"Supply Temperature\"` | Localized role name. |\n| **tags** | array | `[\"heating\"]` | User-defined tags. |\n| **unit** | string | `\"°C\"` | Display unit. |\n| **unitCode** | integer | `2` | Numeric unit code. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Parent device serial number. |\n| **isSensaruDevice** | boolean | `true` | Whether parent is a Sensaru device. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **value** | variant | `45.3` | (optional) Last known value. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": [\n    {\n      \"id\": \"dp-uuid-1\",\n      \"businessPartnerId\": \"bp-uuid\",\n      \"locationId\": \"1:WE-01.100\",\n      \"disabled\": false,\n      \"label\": \"Supply Temperature\",\n      \"nativeId\": \"S108AABB.smoothedSupplyTemperature\",\n      \"parentId\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n      \"type\": \"double\",\n      \"aggregation\": \"average\",\n      \"role\": 201014,\n      \"roleName\": \"Supply Temperature\",\n      \"tags\": [],\n      \"unit\": \"\\u00b0C\",\n      \"unitCode\": 2,\n      \"metadata\": {},\n      \"serialNumber\": \"S108AABBCCDD\",\n      \"isSensaruDevice\": true,\n      \"updatedAt\": 1700000000,\n      \"value\": 45.3\n    }\n  ],\n  \"responseMetadata\": {\n    \"nextKey\": \"\"\n  }\n}"}],"_postman_id":"c62c9888-1d66-419f-95a4-d9204a6e1ce5"}],"id":"5878b182-16e3-4d6d-ac0a-e1fad4d53133","_postman_id":"5878b182-16e3-4d6d-ac0a-e1fad4d53133","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get device","id":"dcecc749-c199-410f-9067-490df0c322d6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId?lang=en-US","description":"<p>Returns a single device by ID.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is a single device object.</p>\n<h5 id=\"device-object\">Device object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"d23d6fd0-...\"</code></td>\n<td>The device UUID.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"bp-uuid\"</code></td>\n<td>Business partner that owns this device.</td>\n</tr>\n<tr>\n<td><strong>type</strong></td>\n<td>string</td>\n<td><code>\"S1\"</code></td>\n<td>Device family (<code>G1</code>, <code>S1</code>, <code>V1</code>).</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td>Device serial number.</td>\n</tr>\n<tr>\n<td><strong>deviceTypeId</strong></td>\n<td>string</td>\n<td><code>\"s1-08-01\"</code></td>\n<td>(Sensaru devices only) Device type identifier.</td>\n</tr>\n<tr>\n<td><strong>deviceType</strong></td>\n<td>integer</td>\n<td><code>8</code></td>\n<td>(Sensaru devices only) Numeric device type from serial.</td>\n</tr>\n<tr>\n<td><strong>operationMode</strong></td>\n<td>integer</td>\n<td><code>1</code></td>\n<td>(Sensaru devices only) Current operation mode.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Optimizer 1\"</code></td>\n<td>Display name.</td>\n</tr>\n<tr>\n<td><strong>notes</strong></td>\n<td>string</td>\n<td><code>\"Floor 2\"</code></td>\n<td>(optional) Free-text notes.</td>\n</tr>\n<tr>\n<td><strong>isSensaruDevice</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether this is a Sensaru device.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Hierarchical asset location.</td>\n</tr>\n<tr>\n<td><strong>locationName</strong></td>\n<td>string</td>\n<td><code>\"Building A\"</code></td>\n<td>Location display name.</td>\n</tr>\n<tr>\n<td><strong>roles</strong></td>\n<td>array</td>\n<td><code>[201014]</code></td>\n<td>Numeric role IDs.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"energy\"]</code></td>\n<td>User-defined tags.</td>\n</tr>\n<tr>\n<td><strong>status</strong></td>\n<td>string</td>\n<td><code>\"online\"</code></td>\n<td><code>\"online\"</code> or <code>\"offline\"</code>.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinates</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from asset.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinatesZip</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from ZIP geocoding.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[{\"street\": \"...\", ...}]</code></td>\n<td>Address objects.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Custom metadata.</td>\n</tr>\n<tr>\n<td><strong>settings</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Device-specific settings.</td>\n</tr>\n<tr>\n<td><strong>unconfigured</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>(optional) Only present if <code>true</code>.</td>\n</tr>\n<tr>\n<td><strong>updatedAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>createdAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>lastPacket</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds of last received packet.</td>\n</tr>\n<tr>\n<td><strong>dataPoints</strong></td>\n<td>array</td>\n<td><code>[\"dp-uuid-1\"]</code></td>\n<td>Data point UUIDs belonging to this device.</td>\n</tr>\n<tr>\n<td><strong>configurationFields</strong></td>\n<td>array</td>\n<td></td>\n<td>(optional) Only when <code>configFields=true</code>. Array of field descriptors with <code>id</code>, <code>type</code>, <code>label</code>, <code>required</code>, <code>enum</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Include configuration fields. Default: <code>false</code>.</p>\n","type":"text/plain"},"key":"configFields","value":"true"}],"variable":[{"id":"b873ebed-3cb2-4d02-a2d9-066ce8e02060","description":{"content":"<p>(required) The device UUID as returned by <code>GET /devices</code>.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"}]}},"response":[{"id":"a53f703b-66c8-4c13-b8ed-a9e61f58ea6c","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."},{"key":"configFields","value":"true","description":"(optional) Include configuration fields. Default: `false`.","disabled":true}],"variable":[{"id":"b873ebed-3cb2-4d02-a2d9-066ce8e02060","key":"deviceId","value":"","description":"(required) The device UUID as returned by `GET /devices`."}]},"description":"Returns a single device by ID.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is a single device object.\n\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n    \"businessPartnerId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n    \"type\": \"S1\",\n    \"serialNumber\": \"S108AABBCCDD\",\n    \"deviceTypeId\": \"s1-08-01\",\n    \"deviceType\": 8,\n    \"operationMode\": 1,\n    \"name\": \"Optimizer 1\",\n    \"notes\": \"\",\n    \"isSensaruDevice\": true,\n    \"locationId\": \"1:WE-01.100\",\n    \"roles\": [\n      201014\n    ],\n    \"tags\": [],\n    \"status\": \"online\",\n    \"settings\": {\n      \"heatingCircuit\": \"HC-1\"\n    },\n    \"updatedAt\": 1700000000,\n    \"createdAt\": 1699000000,\n    \"lastPacket\": 1700000000,\n    \"dataPoints\": [\n      \"dp-uuid-1\",\n      \"dp-uuid-2\"\n    ],\n    \"configurationFields\": [\n      {\n        \"id\": \"heatingCircuit\",\n        \"type\": \"heatingCircuitSelector\",\n        \"label\": \"Heating Circuit\",\n        \"required\": true\n      }\n    ]\n  }\n}"},{"id":"48984d7b-bbfe-4900-8fb8-c7cfede0af6d","name":"Not found","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."},{"key":"configFields","value":"true","description":"(optional) Include configuration fields. Default: `false`.","disabled":true}],"variable":[{"id":"b873ebed-3cb2-4d02-a2d9-066ce8e02060","key":"deviceId","value":"","description":"(required) The device UUID as returned by `GET /devices`."}]},"description":"Returns a single device by ID.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is a single device object.\n\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"not_found\",\n  \"description\": \"The requested resource was not found.\"\n}"}],"_postman_id":"dcecc749-c199-410f-9067-490df0c322d6"},{"name":"Update device","id":"2c084635-3901-4c57-91c6-b7f56081361a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Optimizer 1\",\n  \"notes\": \"\",\n  \"operationMode\": 1,\n  \"locationId\": \"1:WE-01.100\",\n  \"settings\": {},\n  \"metadata\": {},\n  \"tags\": []\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId","description":"<p>Updates a device (full replacement). Also used for moving or merging devices.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Optimizer 1\"</code></td>\n<td></td>\n<td>(optional) Display name of the device.</td>\n</tr>\n<tr>\n<td><strong>notes</strong></td>\n<td>string</td>\n<td><code>\"Floor 2\"</code></td>\n<td></td>\n<td>(optional) Free-text notes.</td>\n</tr>\n<tr>\n<td><strong>operationMode</strong></td>\n<td>integer</td>\n<td><code>1</code></td>\n<td></td>\n<td>(optional) New operation mode ID.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td></td>\n<td>(optional) Hierarchical asset location ID.</td>\n</tr>\n<tr>\n<td><strong>locationName</strong></td>\n<td>string</td>\n<td><code>\"Building A\"</code></td>\n<td></td>\n<td>(optional) Location display name.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"uuid\"</code></td>\n<td></td>\n<td>(optional) Move device to a different business partner (requires <code>move=1</code> query param). Only for superuser/systemProvider/systemDistributor.</td>\n</tr>\n<tr>\n<td><strong>settings</strong></td>\n<td>object</td>\n<td><code>{\"heatingCircuit\": \"HC-1\"}</code></td>\n<td></td>\n<td>(optional) Device-specific settings. Heating circuit assignment is validated for uniqueness within the economic unit.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{\"custom\": \"value\"}</code></td>\n<td></td>\n<td>(optional) Custom metadata object.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"energy\", \"heating\"]</code></td>\n<td></td>\n<td>(optional) Device tags.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is the updated device object.</p>\n<h5 id=\"device-object\">Device object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"d23d6fd0-...\"</code></td>\n<td>The device UUID.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"bp-uuid\"</code></td>\n<td>Business partner that owns this device.</td>\n</tr>\n<tr>\n<td><strong>type</strong></td>\n<td>string</td>\n<td><code>\"S1\"</code></td>\n<td>Device family (<code>G1</code>, <code>S1</code>, <code>V1</code>).</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td>Device serial number.</td>\n</tr>\n<tr>\n<td><strong>deviceTypeId</strong></td>\n<td>string</td>\n<td><code>\"s1-08-01\"</code></td>\n<td>(Sensaru devices only) Device type identifier.</td>\n</tr>\n<tr>\n<td><strong>deviceType</strong></td>\n<td>integer</td>\n<td><code>8</code></td>\n<td>(Sensaru devices only) Numeric device type from serial.</td>\n</tr>\n<tr>\n<td><strong>operationMode</strong></td>\n<td>integer</td>\n<td><code>1</code></td>\n<td>(Sensaru devices only) Current operation mode.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Optimizer 1\"</code></td>\n<td>Display name.</td>\n</tr>\n<tr>\n<td><strong>notes</strong></td>\n<td>string</td>\n<td><code>\"Floor 2\"</code></td>\n<td>(optional) Free-text notes.</td>\n</tr>\n<tr>\n<td><strong>isSensaruDevice</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether this is a Sensaru device.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Hierarchical asset location.</td>\n</tr>\n<tr>\n<td><strong>locationName</strong></td>\n<td>string</td>\n<td><code>\"Building A\"</code></td>\n<td>Location display name.</td>\n</tr>\n<tr>\n<td><strong>roles</strong></td>\n<td>array</td>\n<td><code>[201014]</code></td>\n<td>Numeric role IDs.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"energy\"]</code></td>\n<td>User-defined tags.</td>\n</tr>\n<tr>\n<td><strong>status</strong></td>\n<td>string</td>\n<td><code>\"online\"</code></td>\n<td><code>\"online\"</code> or <code>\"offline\"</code>.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinates</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from asset.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinatesZip</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from ZIP geocoding.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[{\"street\": \"...\", ...}]</code></td>\n<td>Address objects.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Custom metadata.</td>\n</tr>\n<tr>\n<td><strong>settings</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Device-specific settings.</td>\n</tr>\n<tr>\n<td><strong>unconfigured</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>(optional) Only present if <code>true</code>.</td>\n</tr>\n<tr>\n<td><strong>updatedAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>createdAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>lastPacket</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds of last received packet.</td>\n</tr>\n<tr>\n<td><strong>dataPoints</strong></td>\n<td>array</td>\n<td><code>[\"dp-uuid-1\"]</code></td>\n<td>Data point UUIDs belonging to this device.</td>\n</tr>\n<tr>\n<td><strong>configurationFields</strong></td>\n<td>array</td>\n<td></td>\n<td>(optional) Only when <code>configFields=true</code>. Array of field descriptors with <code>id</code>, <code>type</code>, <code>label</code>, <code>required</code>, <code>enum</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Set to <code>1</code> to move device to a different business partner.</p>\n","type":"text/plain"},"key":"move","value":"1"},{"disabled":true,"description":{"content":"<p>(optional) UUID of device to merge with.</p>\n","type":"text/plain"},"key":"merge","value":""},{"disabled":true,"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"}],"variable":[{"id":"13c0c3f1-de6f-4b8c-89bf-d5a999cd37b8","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"}]}},"response":[{"id":"c536512a-71a0-4b7c-bff9-89a29d50d7e7","name":"Success","originalRequest":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Optimizer 1\",\n  \"notes\": \"\",\n  \"operationMode\": 1,\n  \"locationId\": \"1:WE-01.100\",\n  \"settings\": {},\n  \"metadata\": {},\n  \"tags\": []\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId"],"query":[{"key":"move","value":"1","description":"(optional) Set to `1` to move device to a different business partner.","disabled":true},{"key":"merge","value":"","description":"(optional) UUID of device to merge with.","disabled":true},{"key":"lang","value":"en-US","description":"(optional) Language code.","disabled":true}],"variable":[{"id":"13c0c3f1-de6f-4b8c-89bf-d5a999cd37b8","key":"deviceId","value":"","description":"(required) The device UUID."}]},"description":"Updates a device (full replacement). Also used for moving or merging devices.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **name** | string | `\"Optimizer 1\"` | | (optional) Display name of the device. |\n| **notes** | string | `\"Floor 2\"` | | (optional) Free-text notes. |\n| **operationMode** | integer | `1` | | (optional) New operation mode ID. |\n| **locationId** | string | `\"1:WE-01.100\"` | | (optional) Hierarchical asset location ID. |\n| **locationName** | string | `\"Building A\"` | | (optional) Location display name. |\n| **businessPartnerId** | string | `\"uuid\"` | | (optional) Move device to a different business partner (requires `move=1` query param). Only for superuser/systemProvider/systemDistributor. |\n| **settings** | object | `{\"heatingCircuit\": \"HC-1\"}` | | (optional) Device-specific settings. Heating circuit assignment is validated for uniqueness within the economic unit. |\n| **metadata** | object | `{\"custom\": \"value\"}` | | (optional) Custom metadata object. |\n| **tags** | array | `[\"energy\", \"heating\"]` | | (optional) Device tags. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is the updated device object.\n\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n    \"type\": \"S1\",\n    \"serialNumber\": \"S108AABBCCDD\",\n    \"name\": \"Optimizer 1 (updated)\",\n    \"isSensaruDevice\": true,\n    \"locationId\": \"1:WE-01.100\",\n    \"updatedAt\": 1700003600,\n    \"createdAt\": 1699000000,\n    \"lastPacket\": 1700000000\n  }\n}"},{"id":"4e8561c7-3fc4-40af-86cd-52bbf5846df5","name":"Not found","originalRequest":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Optimizer 1\",\n  \"notes\": \"\",\n  \"operationMode\": 1,\n  \"locationId\": \"1:WE-01.100\",\n  \"settings\": {},\n  \"metadata\": {},\n  \"tags\": []\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId"],"query":[{"key":"move","value":"1","description":"(optional) Set to `1` to move device to a different business partner.","disabled":true},{"key":"merge","value":"","description":"(optional) UUID of device to merge with.","disabled":true},{"key":"lang","value":"en-US","description":"(optional) Language code.","disabled":true}],"variable":[{"id":"13c0c3f1-de6f-4b8c-89bf-d5a999cd37b8","key":"deviceId","value":"","description":"(required) The device UUID."}]},"description":"Updates a device (full replacement). Also used for moving or merging devices.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **name** | string | `\"Optimizer 1\"` | | (optional) Display name of the device. |\n| **notes** | string | `\"Floor 2\"` | | (optional) Free-text notes. |\n| **operationMode** | integer | `1` | | (optional) New operation mode ID. |\n| **locationId** | string | `\"1:WE-01.100\"` | | (optional) Hierarchical asset location ID. |\n| **locationName** | string | `\"Building A\"` | | (optional) Location display name. |\n| **businessPartnerId** | string | `\"uuid\"` | | (optional) Move device to a different business partner (requires `move=1` query param). Only for superuser/systemProvider/systemDistributor. |\n| **settings** | object | `{\"heatingCircuit\": \"HC-1\"}` | | (optional) Device-specific settings. Heating circuit assignment is validated for uniqueness within the economic unit. |\n| **metadata** | object | `{\"custom\": \"value\"}` | | (optional) Custom metadata object. |\n| **tags** | array | `[\"energy\", \"heating\"]` | | (optional) Device tags. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is the updated device object.\n\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"not_found\",\n  \"description\": \"The requested resource was not found.\"\n}"}],"_postman_id":"2c084635-3901-4c57-91c6-b7f56081361a"},{"name":"Update device (partial)","id":"141c6a4d-5578-4708-874d-06f21e9bfd2d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Optimizer 1\",\n  \"settings\": {\n    \"heatingCircuit\": \"HC-1\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId","description":"<p>Partially updates a device. Only provided fields are changed.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Optimizer 1\"</code></td>\n<td></td>\n<td>(optional) Display name of the device.</td>\n</tr>\n<tr>\n<td><strong>notes</strong></td>\n<td>string</td>\n<td><code>\"Floor 2\"</code></td>\n<td></td>\n<td>(optional) Free-text notes.</td>\n</tr>\n<tr>\n<td><strong>operationMode</strong></td>\n<td>integer</td>\n<td><code>1</code></td>\n<td></td>\n<td>(optional) New operation mode ID.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td></td>\n<td>(optional) Hierarchical asset location ID.</td>\n</tr>\n<tr>\n<td><strong>locationName</strong></td>\n<td>string</td>\n<td><code>\"Building A\"</code></td>\n<td></td>\n<td>(optional) Location display name.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"uuid\"</code></td>\n<td></td>\n<td>(optional) Move device to a different business partner (requires <code>move=1</code> query param). Only for superuser/systemProvider/systemDistributor.</td>\n</tr>\n<tr>\n<td><strong>settings</strong></td>\n<td>object</td>\n<td><code>{\"heatingCircuit\": \"HC-1\"}</code></td>\n<td></td>\n<td>(optional) Device-specific settings. Heating circuit assignment is validated for uniqueness within the economic unit.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{\"custom\": \"value\"}</code></td>\n<td></td>\n<td>(optional) Custom metadata object.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"energy\", \"heating\"]</code></td>\n<td></td>\n<td>(optional) Device tags.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is the updated device object.</p>\n<h5 id=\"device-object\">Device object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"d23d6fd0-...\"</code></td>\n<td>The device UUID.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"bp-uuid\"</code></td>\n<td>Business partner that owns this device.</td>\n</tr>\n<tr>\n<td><strong>type</strong></td>\n<td>string</td>\n<td><code>\"S1\"</code></td>\n<td>Device family (<code>G1</code>, <code>S1</code>, <code>V1</code>).</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td>Device serial number.</td>\n</tr>\n<tr>\n<td><strong>deviceTypeId</strong></td>\n<td>string</td>\n<td><code>\"s1-08-01\"</code></td>\n<td>(Sensaru devices only) Device type identifier.</td>\n</tr>\n<tr>\n<td><strong>deviceType</strong></td>\n<td>integer</td>\n<td><code>8</code></td>\n<td>(Sensaru devices only) Numeric device type from serial.</td>\n</tr>\n<tr>\n<td><strong>operationMode</strong></td>\n<td>integer</td>\n<td><code>1</code></td>\n<td>(Sensaru devices only) Current operation mode.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Optimizer 1\"</code></td>\n<td>Display name.</td>\n</tr>\n<tr>\n<td><strong>notes</strong></td>\n<td>string</td>\n<td><code>\"Floor 2\"</code></td>\n<td>(optional) Free-text notes.</td>\n</tr>\n<tr>\n<td><strong>isSensaruDevice</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether this is a Sensaru device.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Hierarchical asset location.</td>\n</tr>\n<tr>\n<td><strong>locationName</strong></td>\n<td>string</td>\n<td><code>\"Building A\"</code></td>\n<td>Location display name.</td>\n</tr>\n<tr>\n<td><strong>roles</strong></td>\n<td>array</td>\n<td><code>[201014]</code></td>\n<td>Numeric role IDs.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"energy\"]</code></td>\n<td>User-defined tags.</td>\n</tr>\n<tr>\n<td><strong>status</strong></td>\n<td>string</td>\n<td><code>\"online\"</code></td>\n<td><code>\"online\"</code> or <code>\"offline\"</code>.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinates</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from asset.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinatesZip</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from ZIP geocoding.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[{\"street\": \"...\", ...}]</code></td>\n<td>Address objects.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Custom metadata.</td>\n</tr>\n<tr>\n<td><strong>settings</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Device-specific settings.</td>\n</tr>\n<tr>\n<td><strong>unconfigured</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>(optional) Only present if <code>true</code>.</td>\n</tr>\n<tr>\n<td><strong>updatedAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>createdAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>lastPacket</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds of last received packet.</td>\n</tr>\n<tr>\n<td><strong>dataPoints</strong></td>\n<td>array</td>\n<td><code>[\"dp-uuid-1\"]</code></td>\n<td>Data point UUIDs belonging to this device.</td>\n</tr>\n<tr>\n<td><strong>configurationFields</strong></td>\n<td>array</td>\n<td></td>\n<td>(optional) Only when <code>configFields=true</code>. Array of field descriptors with <code>id</code>, <code>type</code>, <code>label</code>, <code>required</code>, <code>enum</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Set to <code>1</code> to move device to a different business partner.</p>\n","type":"text/plain"},"key":"move","value":"1"},{"disabled":true,"description":{"content":"<p>(optional) UUID of device to merge with.</p>\n","type":"text/plain"},"key":"merge","value":""},{"disabled":true,"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"}],"variable":[{"id":"5ea9b0ba-32ba-4073-bb2a-0b76fd243443","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"}]}},"response":[{"id":"150c93c8-d819-4fda-9e85-c1ad2fbd7d2b","name":"Success","originalRequest":{"method":"PATCH","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Optimizer 1\",\n  \"settings\": {\n    \"heatingCircuit\": \"HC-1\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId"],"query":[{"key":"move","value":"1","description":"(optional) Set to `1` to move device to a different business partner.","disabled":true},{"key":"merge","value":"","description":"(optional) UUID of device to merge with.","disabled":true},{"key":"lang","value":"en-US","description":"(optional) Language code.","disabled":true}],"variable":[{"id":"5ea9b0ba-32ba-4073-bb2a-0b76fd243443","key":"deviceId","value":"","description":"(required) The device UUID."}]},"description":"Partially updates a device. Only provided fields are changed.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **name** | string | `\"Optimizer 1\"` | | (optional) Display name of the device. |\n| **notes** | string | `\"Floor 2\"` | | (optional) Free-text notes. |\n| **operationMode** | integer | `1` | | (optional) New operation mode ID. |\n| **locationId** | string | `\"1:WE-01.100\"` | | (optional) Hierarchical asset location ID. |\n| **locationName** | string | `\"Building A\"` | | (optional) Location display name. |\n| **businessPartnerId** | string | `\"uuid\"` | | (optional) Move device to a different business partner (requires `move=1` query param). Only for superuser/systemProvider/systemDistributor. |\n| **settings** | object | `{\"heatingCircuit\": \"HC-1\"}` | | (optional) Device-specific settings. Heating circuit assignment is validated for uniqueness within the economic unit. |\n| **metadata** | object | `{\"custom\": \"value\"}` | | (optional) Custom metadata object. |\n| **tags** | array | `[\"energy\", \"heating\"]` | | (optional) Device tags. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is the updated device object.\n\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n    \"type\": \"S1\",\n    \"serialNumber\": \"S108AABBCCDD\",\n    \"name\": \"Optimizer 1 (updated)\",\n    \"isSensaruDevice\": true,\n    \"locationId\": \"1:WE-01.100\",\n    \"updatedAt\": 1700003600,\n    \"createdAt\": 1699000000,\n    \"lastPacket\": 1700000000\n  }\n}"},{"id":"c5e4a22c-5be5-45a4-b534-d8c31be569df","name":"Not found","originalRequest":{"method":"PATCH","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Optimizer 1\",\n  \"settings\": {\n    \"heatingCircuit\": \"HC-1\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId"],"query":[{"key":"move","value":"1","description":"(optional) Set to `1` to move device to a different business partner.","disabled":true},{"key":"merge","value":"","description":"(optional) UUID of device to merge with.","disabled":true},{"key":"lang","value":"en-US","description":"(optional) Language code.","disabled":true}],"variable":[{"id":"5ea9b0ba-32ba-4073-bb2a-0b76fd243443","key":"deviceId","value":"","description":"(required) The device UUID."}]},"description":"Partially updates a device. Only provided fields are changed.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **name** | string | `\"Optimizer 1\"` | | (optional) Display name of the device. |\n| **notes** | string | `\"Floor 2\"` | | (optional) Free-text notes. |\n| **operationMode** | integer | `1` | | (optional) New operation mode ID. |\n| **locationId** | string | `\"1:WE-01.100\"` | | (optional) Hierarchical asset location ID. |\n| **locationName** | string | `\"Building A\"` | | (optional) Location display name. |\n| **businessPartnerId** | string | `\"uuid\"` | | (optional) Move device to a different business partner (requires `move=1` query param). Only for superuser/systemProvider/systemDistributor. |\n| **settings** | object | `{\"heatingCircuit\": \"HC-1\"}` | | (optional) Device-specific settings. Heating circuit assignment is validated for uniqueness within the economic unit. |\n| **metadata** | object | `{\"custom\": \"value\"}` | | (optional) Custom metadata object. |\n| **tags** | array | `[\"energy\", \"heating\"]` | | (optional) Device tags. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is the updated device object.\n\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"not_found\",\n  \"description\": \"The requested resource was not found.\"\n}"}],"_postman_id":"141c6a4d-5578-4708-874d-06f21e9bfd2d"},{"name":"Delete device","id":"bab49450-1bfb-4ede-8bac-6d3df2adeede","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId?factoryReset=1","description":"<p>Deletes a device. Soft delete by default. Set <code>factoryReset=1</code> for hard delete (gateway: also deletes all child sensors).</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Set to <code>1</code> for factory reset / hard delete. Default: <code>0</code> (soft delete).</p>\n","type":"text/plain"},"key":"factoryReset","value":"1"}],"variable":[{"id":"2dbbe088-6580-4045-abe4-7f6633fb87fd","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"}]}},"response":[{"id":"bc7618ea-ac10-49c7-939a-aec3004b1b39","name":"Success","originalRequest":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId?factoryReset=1","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId"],"query":[{"key":"factoryReset","value":"1","description":"(optional) Set to `1` for factory reset / hard delete. Default: `0` (soft delete)."}],"variable":[{"id":"2dbbe088-6580-4045-abe4-7f6633fb87fd","key":"deviceId","value":"","description":"(required) The device UUID."}]},"description":"Deletes a device. Soft delete by default. Set `factoryReset=1` for hard delete (gateway: also deletes all child sensors).\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"},{"id":"2fe78b24-cb36-4cf7-823d-adc3051ba991","name":"Not found","originalRequest":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId?factoryReset=1","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId"],"query":[{"key":"factoryReset","value":"1","description":"(optional) Set to `1` for factory reset / hard delete. Default: `0` (soft delete)."}],"variable":[{"id":"2dbbe088-6580-4045-abe4-7f6633fb87fd","key":"deviceId","value":"","description":"(required) The device UUID."}]},"description":"Deletes a device. Soft delete by default. Set `factoryReset=1` for hard delete (gateway: also deletes all child sensors).\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"not_found\",\n  \"description\": \"The requested resource was not found.\"\n}"}],"_postman_id":"bab49450-1bfb-4ede-8bac-6d3df2adeede"},{"name":"Requeue gateway packets","id":"d1ff70d8-c6dc-41e9-ac1b-8a46145e9ac5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/requeue-packets?dateFrom=1751846400&dateTo=1751932800","description":"<p>Re-injects raw gateway packets into the processing pipeline for the given time range. Device must be a Sensaru gateway (role 20300).</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","requeue-packets"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Unix timestamp in seconds — start of date range.</p>\n","type":"text/plain"},"key":"dateFrom","value":"1751846400"},{"description":{"content":"<p>(optional) Unix timestamp in seconds — end of date range.</p>\n","type":"text/plain"},"key":"dateTo","value":"1751932800"}],"variable":[{"id":"ae22f072-27c5-4b61-9491-1f7d1acc435c","description":{"content":"<p>(required) The gateway device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"}]}},"response":[{"id":"306bbf0e-b0a5-4fb8-b417-0b37d0274e40","name":"Success","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/requeue-packets?dateFrom=1751846400&dateTo=1751932800","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","requeue-packets"],"query":[{"key":"dateFrom","value":"1751846400","description":"(optional) Unix timestamp in seconds — start of date range."},{"key":"dateTo","value":"1751932800","description":"(optional) Unix timestamp in seconds — end of date range."}],"variable":[{"id":"ae22f072-27c5-4b61-9491-1f7d1acc435c","key":"deviceId","value":"","description":"(required) The gateway device UUID."}]},"description":"Re-injects raw gateway packets into the processing pipeline for the given time range. Device must be a Sensaru gateway (role 20300).\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"d1ff70d8-c6dc-41e9-ac1b-8a46145e9ac5"},{"name":"Set gateway data","id":"53633ab8-6252-4ba6-95dd-6ae37ef89ac9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"dataType\": \"s1\",\n  \"data\": {}\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/gateway-data","description":"<p>Manually injects sensor data into a gateway for testing or correction. Device must be a Sensaru gateway (role 20300).</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>dataType</strong></td>\n<td>string</td>\n<td><code>\"s1\"</code></td>\n<td></td>\n<td>(required) Type of sensor data to inject.</td>\n</tr>\n<tr>\n<td><strong>data</strong></td>\n<td>variant</td>\n<td><code>{}</code></td>\n<td></td>\n<td>(required) The sensor data payload. Structure depends on <code>dataType</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","gateway-data"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"32808ac5-e15c-4ae5-b84c-12d7cca5321a","description":{"content":"<p>(required) The gateway device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"}]}},"response":[{"id":"59ee8398-e6ae-4dd7-9bf5-2e73eeea71ff","name":"Success","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"dataType\": \"s1\",\n  \"data\": {}\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/gateway-data","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","gateway-data"],"variable":[{"id":"32808ac5-e15c-4ae5-b84c-12d7cca5321a","key":"deviceId","value":"","description":"(required) The gateway device UUID."}]},"description":"Manually injects sensor data into a gateway for testing or correction. Device must be a Sensaru gateway (role 20300).\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **dataType** | string | `\"s1\"` | | (required) Type of sensor data to inject. |\n| **data** | variant | `{}` | | (required) The sensor data payload. Structure depends on `dataType`. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"53633ab8-6252-4ba6-95dd-6ae37ef89ac9"},{"name":"Get device service messages","id":"848b6149-fa02-4f7d-b8ae-d948a496d825","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/service-messages?limit=100","description":"<p>Returns service messages for a specific device.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.serviceMessages</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of service message objects.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"service-message-object\">Service message object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"msg-uuid\"</code></td>\n<td>Service message ID.</td>\n</tr>\n<tr>\n<td><strong>createdAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>lastUpdate</strong></td>\n<td>integer</td>\n<td><code>1700003600</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>deviceId</strong></td>\n<td>UUID</td>\n<td><code>\"device-uuid\"</code></td>\n<td>Device that triggered the message.</td>\n</tr>\n<tr>\n<td><strong>dataPointId</strong></td>\n<td>UUID</td>\n<td><code>\"dp-uuid\"</code></td>\n<td>Related data point.</td>\n</tr>\n<tr>\n<td><strong>roles</strong></td>\n<td>array</td>\n<td><code>[201014, 800001]</code></td>\n<td>Associated role IDs.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Location of the device.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[{\"street\": \"...\", ...}]</code></td>\n<td>Device addresses.</td>\n</tr>\n<tr>\n<td><strong>priority</strong></td>\n<td>string</td>\n<td><code>\"error\"</code></td>\n<td>Severity: <code>\"critical\"</code>, <code>\"error\"</code>, <code>\"warning\"</code>, <code>\"info\"</code>.</td>\n</tr>\n<tr>\n<td><strong>isSticky</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether the message persists after resolution.</td>\n</tr>\n<tr>\n<td><strong>message</strong></td>\n<td>string</td>\n<td><code>\"Sensor offline\"</code></td>\n<td>Localized message text.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":deviceId","service-messages"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Filter by location ID.</p>\n","type":"text/plain"},"key":"locationId","value":""},{"disabled":true,"description":{"content":"<p>(optional) <code>parent</code> or <code>exact</code>.</p>\n","type":"text/plain"},"key":"locationIdFilterType","value":"parent"},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated role IDs.</p>\n","type":"text/plain"},"key":"roles","value":""},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated status filters.</p>\n","type":"text/plain"},"key":"filter","value":""},{"disabled":true,"description":{"content":"<p>(optional) Full-text search.</p>\n","type":"text/plain"},"key":"search","value":""},{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–1000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"100"}],"variable":[{"id":"f515fed9-d26f-466e-a19f-1adbb3518ab6","description":{"content":"<p>(required) The device UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"deviceId"}]}},"response":[{"id":"f219b5f7-56f9-423c-974a-6f8c36f60601","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/:deviceId/service-messages?limit=100","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices",":deviceId","service-messages"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code.","disabled":true},{"key":"locationId","value":"","description":"(optional) Filter by location ID.","disabled":true},{"key":"locationIdFilterType","value":"parent","description":"(optional) `parent` or `exact`.","disabled":true},{"key":"roles","value":"","description":"(optional) Comma-separated role IDs.","disabled":true},{"key":"filter","value":"","description":"(optional) Comma-separated status filters.","disabled":true},{"key":"search","value":"","description":"(optional) Full-text search.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"100","description":"(optional) Page size (1–1000). Default: `100`."}],"variable":[{"id":"f515fed9-d26f-466e-a19f-1adbb3518ab6","key":"deviceId","value":"","description":"(required) The device UUID."}]},"description":"Returns service messages for a specific device.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.serviceMessages** | array | | Array of service message objects. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |\n\n##### Service message object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"msg-uuid\"` | Service message ID. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastUpdate** | integer | `1700003600` | Unix epoch seconds. |\n| **deviceId** | UUID | `\"device-uuid\"` | Device that triggered the message. |\n| **dataPointId** | UUID | `\"dp-uuid\"` | Related data point. |\n| **roles** | array | `[201014, 800001]` | Associated role IDs. |\n| **locationId** | string | `\"1:WE-01.100\"` | Location of the device. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Device addresses. |\n| **priority** | string | `\"error\"` | Severity: `\"critical\"`, `\"error\"`, `\"warning\"`, `\"info\"`. |\n| **isSticky** | boolean | `false` | Whether the message persists after resolution. |\n| **message** | string | `\"Sensor offline\"` | Localized message text. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"serviceMessages\": [\n      {\n        \"id\": \"a1b2c3d4-e5f6-7890-abcd-000000000001\",\n        \"createdAt\": 1700000000,\n        \"lastUpdate\": 1700003600,\n        \"deviceId\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n        \"dataPointId\": \"dp-uuid-1\",\n        \"roles\": [\n          201014\n        ],\n        \"locationId\": \"1:WE-01.100\",\n        \"priority\": \"error\",\n        \"isSticky\": false,\n        \"message\": \"Supply temperature sensor offline\"\n      }\n    ],\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"}],"_postman_id":"848b6149-fa02-4f7d-b8ae-d948a496d825"}],"id":"b32238e9-7b0e-4e08-8d58-26e00a6426c5","_postman_id":"b32238e9-7b0e-4e08-8d58-26e00a6426c5","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get data points (global)","id":"3b1366da-5c13-44ea-9d58-e09bf1a92456","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/data-points?roles=900101,900201&lang=en-US&limit=100","description":"<p>Returns data points across all devices, filtered by roles. The <code>roles</code> parameter is required.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of data point objects.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"data-point-object\">Data point object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"dp-uuid\"</code></td>\n<td>Data point UUID.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"bp-uuid\"</code></td>\n<td>Owning business partner.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Hierarchical location.</td>\n</tr>\n<tr>\n<td><strong>disabled</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether data point is disabled.</td>\n</tr>\n<tr>\n<td><strong>label</strong></td>\n<td>string</td>\n<td><code>\"Supply Temperature\"</code></td>\n<td>Localized display name.</td>\n</tr>\n<tr>\n<td><strong>nativeId</strong></td>\n<td>string</td>\n<td><code>\"S108AABB.supplyTemperature\"</code></td>\n<td>Internal native identifier (<code>serial.name</code>).</td>\n</tr>\n<tr>\n<td><strong>parentId</strong></td>\n<td>UUID</td>\n<td><code>\"device-uuid\"</code></td>\n<td>Parent device UUID.</td>\n</tr>\n<tr>\n<td><strong>type</strong></td>\n<td>string</td>\n<td><code>\"double\"</code></td>\n<td>Value type (<code>double</code>, <code>boolean</code>, <code>string</code>, <code>array</code>).</td>\n</tr>\n<tr>\n<td><strong>aggregation</strong></td>\n<td>string</td>\n<td><code>\"average\"</code></td>\n<td>Aggregation method (<code>average</code>, <code>last</code>, <code>sum</code>).</td>\n</tr>\n<tr>\n<td><strong>role</strong></td>\n<td>integer</td>\n<td><code>201014</code></td>\n<td>Numeric role ID.</td>\n</tr>\n<tr>\n<td><strong>roleName</strong></td>\n<td>string</td>\n<td><code>\"Supply Temperature\"</code></td>\n<td>Localized role name.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"heating\"]</code></td>\n<td>User-defined tags.</td>\n</tr>\n<tr>\n<td><strong>unit</strong></td>\n<td>string</td>\n<td><code>\"°C\"</code></td>\n<td>Display unit.</td>\n</tr>\n<tr>\n<td><strong>unitCode</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td>Numeric unit code.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Custom metadata.</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td>Parent device serial number.</td>\n</tr>\n<tr>\n<td><strong>isSensaruDevice</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether parent is a Sensaru device.</td>\n</tr>\n<tr>\n<td><strong>updatedAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>value</strong></td>\n<td>variant</td>\n<td><code>45.3</code></td>\n<td>(optional) Last known value.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices","data-points"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(required) Comma-separated numeric role IDs.</p>\n","type":"text/plain"},"key":"roles","value":"900101,900201"},{"disabled":true,"description":{"content":"<p>(optional) Hierarchical location ID filter.</p>\n","type":"text/plain"},"key":"locationId","value":""},{"disabled":true,"description":{"content":"<p>(optional) <code>parent</code> or <code>exact</code>. Default: <code>exact</code>.</p>\n","type":"text/plain"},"key":"locationIdFilterType","value":"parent"},{"disabled":true,"description":{"content":"<p>(optional) Include virtual devices. Default: <code>false</code>.</p>\n","type":"text/plain"},"key":"virtualDevices","value":"true"},{"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Sort field. Default: <code>id</code>.</p>\n","type":"text/plain"},"key":"orderBy","value":"id"},{"disabled":true,"description":{"content":"<p>(optional) Sort direction. Default: <code>true</code>.</p>\n","type":"text/plain"},"key":"ascending","value":"true"},{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–1000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"100"}],"variable":[]}},"response":[{"id":"914b2053-968c-4534-84ad-2fb076c370b4","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/data-points?roles=900101,900201&lang=en-US&limit=100","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices","data-points"],"query":[{"key":"roles","value":"900101,900201","description":"(required) Comma-separated numeric role IDs."},{"key":"locationId","value":"","description":"(optional) Hierarchical location ID filter.","disabled":true},{"key":"locationIdFilterType","value":"parent","description":"(optional) `parent` or `exact`. Default: `exact`.","disabled":true},{"key":"virtualDevices","value":"true","description":"(optional) Include virtual devices. Default: `false`.","disabled":true},{"key":"lang","value":"en-US","description":"(optional) Language code."},{"key":"orderBy","value":"id","description":"(optional) Sort field. Default: `id`.","disabled":true},{"key":"ascending","value":"true","description":"(optional) Sort direction. Default: `true`.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"100","description":"(optional) Page size (1–1000). Default: `100`."}]},"description":"Returns data points across all devices, filtered by roles. The `roles` parameter is required.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result** | array | | Array of data point objects. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |\n\n##### Data point object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"dp-uuid\"` | Data point UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Owning business partner. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical location. |\n| **disabled** | boolean | `false` | Whether data point is disabled. |\n| **label** | string | `\"Supply Temperature\"` | Localized display name. |\n| **nativeId** | string | `\"S108AABB.supplyTemperature\"` | Internal native identifier (`serial.name`). |\n| **parentId** | UUID | `\"device-uuid\"` | Parent device UUID. |\n| **type** | string | `\"double\"` | Value type (`double`, `boolean`, `string`, `array`). |\n| **aggregation** | string | `\"average\"` | Aggregation method (`average`, `last`, `sum`). |\n| **role** | integer | `201014` | Numeric role ID. |\n| **roleName** | string | `\"Supply Temperature\"` | Localized role name. |\n| **tags** | array | `[\"heating\"]` | User-defined tags. |\n| **unit** | string | `\"°C\"` | Display unit. |\n| **unitCode** | integer | `2` | Numeric unit code. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Parent device serial number. |\n| **isSensaruDevice** | boolean | `true` | Whether parent is a Sensaru device. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **value** | variant | `45.3` | (optional) Last known value. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": [\n    {\n      \"id\": \"dp-uuid-1\",\n      \"businessPartnerId\": \"bp-uuid\",\n      \"locationId\": \"1:WE-01.100\",\n      \"disabled\": false,\n      \"label\": \"Supply Temperature\",\n      \"nativeId\": \"S108AABB.smoothedSupplyTemperature\",\n      \"parentId\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n      \"type\": \"double\",\n      \"aggregation\": \"average\",\n      \"role\": 201014,\n      \"roleName\": \"Supply Temperature\",\n      \"tags\": [],\n      \"unit\": \"\\u00b0C\",\n      \"unitCode\": 2,\n      \"metadata\": {},\n      \"serialNumber\": \"S108AABBCCDD\",\n      \"isSensaruDevice\": true,\n      \"updatedAt\": 1700000000,\n      \"value\": 45.3\n    }\n  ],\n  \"responseMetadata\": {\n    \"nextKey\": \"\"\n  }\n}"}],"_postman_id":"3b1366da-5c13-44ea-9d58-e09bf1a92456"},{"name":"Get energy data","id":"c94fceac-37cf-4549-a9aa-5c42fc0aeb68","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/energy-data?lang=de&dataPointFormat=localized&limit=100","description":"<p>Returns aggregated energy data (heating, electricity, water) per location and year.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an object keyed by location ID. Each location contains years as keys, each year contains energy data.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.{locationId}.{year}.heatingEnergySource</strong></td>\n<td>string</td>\n<td><code>\"gas\"</code></td>\n<td>Energy source: <code>gas</code>, <code>oil</code>, <code>power</code>, <code>district</code>, <code>pellets</code>, <code>other</code>, <code>unknown</code>.</td>\n</tr>\n<tr>\n<td><strong>result.{locationId}.{year}.heatingEnergy</strong></td>\n<td>number</td>\n<td><code>15240</code></td>\n<td>Heating energy in kWh.</td>\n</tr>\n<tr>\n<td><strong>result.{locationId}.{year}.electricalEnergyConsumption</strong></td>\n<td>number</td>\n<td><code>3400</code></td>\n<td>Electrical energy consumption in kWh.</td>\n</tr>\n<tr>\n<td><strong>result.{locationId}.{year}.electricalEnergyProduction</strong></td>\n<td>number</td>\n<td><code>1250</code></td>\n<td>Electrical energy production in kWh (e.g., PV).</td>\n</tr>\n<tr>\n<td><strong>result.{locationId}.{year}.waterVolume</strong></td>\n<td>number</td>\n<td><code>450</code></td>\n<td>Water volume in m³.</td>\n</tr>\n<tr>\n<td><strong>result.{locationId}.{year}.heatingSensorData</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether heating sensor data exists.</td>\n</tr>\n<tr>\n<td><strong>result.{locationId}.{year}.heatingEnergyDataMissing</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether heating data is incomplete.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices","energy-data"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"de"},{"disabled":true,"description":{"content":"<p>(optional) Hierarchical location ID.</p>\n","type":"text/plain"},"key":"locationId","value":""},{"disabled":true,"description":{"content":"<p>(optional) <code>parent</code> or <code>exact</code>. Default: <code>exact</code>.</p>\n","type":"text/plain"},"key":"locationIdFilterType","value":"parent"},{"description":{"content":"<p>(optional) <code>raw</code> (default) or <code>localized</code>.</p>\n","type":"text/plain"},"key":"dataPointFormat","value":"localized"},{"disabled":true,"description":{"content":"<p>(optional) Unix timestamp in seconds.</p>\n","type":"text/plain"},"key":"dateFrom","value":""},{"disabled":true,"description":{"content":"<p>(optional) Unix timestamp in seconds.</p>\n","type":"text/plain"},"key":"dateTo","value":""},{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–10000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"100"}],"variable":[]}},"response":[{"id":"a9b1699f-4233-4337-a952-687507c5797c","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/energy-data?lang=de&dataPointFormat=localized&limit=100","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices","energy-data"],"query":[{"key":"lang","value":"de","description":"(optional) Language code."},{"key":"locationId","value":"","description":"(optional) Hierarchical location ID.","disabled":true},{"key":"locationIdFilterType","value":"parent","description":"(optional) `parent` or `exact`. Default: `exact`.","disabled":true},{"key":"dataPointFormat","value":"localized","description":"(optional) `raw` (default) or `localized`."},{"key":"dateFrom","value":"","description":"(optional) Unix timestamp in seconds.","disabled":true},{"key":"dateTo","value":"","description":"(optional) Unix timestamp in seconds.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"100","description":"(optional) Page size (1–10000). Default: `100`."}]},"description":"Returns aggregated energy data (heating, electricity, water) per location and year.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an object keyed by location ID. Each location contains years as keys, each year contains energy data.\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.{locationId}.{year}.heatingEnergySource** | string | `\"gas\"` | Energy source: `gas`, `oil`, `power`, `district`, `pellets`, `other`, `unknown`. |\n| **result.{locationId}.{year}.heatingEnergy** | number | `15240` | Heating energy in kWh. |\n| **result.{locationId}.{year}.electricalEnergyConsumption** | number | `3400` | Electrical energy consumption in kWh. |\n| **result.{locationId}.{year}.electricalEnergyProduction** | number | `1250` | Electrical energy production in kWh (e.g., PV). |\n| **result.{locationId}.{year}.waterVolume** | number | `450` | Water volume in m³. |\n| **result.{locationId}.{year}.heatingSensorData** | boolean | `true` | Whether heating sensor data exists. |\n| **result.{locationId}.{year}.heatingEnergyDataMissing** | boolean | `false` | Whether heating data is incomplete. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"1:WE-01.100\": {\n      \"2024\": {\n        \"heatingEnergySource\": \"gas\",\n        \"heatingSensorData\": true,\n        \"heatingEnergy\": 15240,\n        \"electricalEnergyConsumption\": 3400,\n        \"electricalEnergyProduction\": 1250,\n        \"waterVolume\": 450,\n        \"heatingEnergyDataMissing\": false,\n        \"electricalEnergyConsumptionDataMissing\": false,\n        \"electricalEnergyProductionDataMissing\": true,\n        \"waterVolumeDataMissing\": true\n      }\n    }\n  }\n}"}],"_postman_id":"c94fceac-37cf-4549-a9aa-5c42fc0aeb68"},{"name":"Get logs (global)","id":"dc997f93-0ef1-4441-b5b9-927b1097c8ff","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/logs?roles=900102,900202&lang=de&timeFormat=iso-8601&convertToNumber=true&aggregate=year&limit=1000","description":"<p>Returns data point logs across multiple devices, filtered by roles. The <code>roles</code> parameter is required.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.dataPoints</strong></td>\n<td>object</td>\n<td></td>\n<td>Object keyed by data point UUID, each value is a data point metadata object.</td>\n</tr>\n<tr>\n<td><strong>result.logs</strong></td>\n<td>object</td>\n<td></td>\n<td>Object keyed by data point UUID, each value is an array of <code>[timestamp, value]</code> pairs.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices","logs"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(required) Comma-separated numeric role IDs.</p>\n","type":"text/plain"},"key":"roles","value":"900102,900202"},{"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"de"},{"disabled":true,"description":{"content":"<p>(optional) Hierarchical location ID.</p>\n","type":"text/plain"},"key":"locationId","value":""},{"disabled":true,"description":{"content":"<p>(optional) <code>parent</code> or <code>exact</code>. Default: <code>exact</code>.</p>\n","type":"text/plain"},"key":"locationIdFilterType","value":"parent"},{"description":{"content":"<p>(optional) <code>unix-timestamp-seconds</code> (default), <code>unix-timestamp-milliseconds</code>, or <code>iso-8601</code>.</p>\n","type":"text/plain"},"key":"timeFormat","value":"iso-8601"},{"disabled":true,"description":{"content":"<p>(optional) <code>raw</code> (default) or <code>localized</code>.</p>\n","type":"text/plain"},"key":"dataPointFormat","value":"raw"},{"description":{"content":"<p>(optional) Convert values to numbers.</p>\n","type":"text/plain"},"key":"convertToNumber","value":"true"},{"description":{"content":"<p>(optional) <code>hour</code>, <code>day</code>, <code>year</code>, or <code>all</code>. Note: <code>none</code> and <code>15m</code> are not available here.</p>\n","type":"text/plain"},"key":"aggregate","value":"year"},{"disabled":true,"description":{"content":"<p>(optional) Unix timestamp in seconds.</p>\n","type":"text/plain"},"key":"dateFrom","value":""},{"disabled":true,"description":{"content":"<p>(optional) Unix timestamp in seconds.</p>\n","type":"text/plain"},"key":"dateTo","value":""},{"disabled":true,"description":{"content":"<p>(optional) Include virtual devices. Default: <code>false</code>.</p>\n","type":"text/plain"},"key":"virtualDevices","value":"true"},{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–10000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"1000"}],"variable":[]}},"response":[{"id":"c8d7e85f-39e3-4dff-a010-16fcb44daddd","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/logs?roles=900102,900202&lang=de&timeFormat=iso-8601&convertToNumber=true&aggregate=year&limit=1000","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices","logs"],"query":[{"key":"roles","value":"900102,900202","description":"(required) Comma-separated numeric role IDs."},{"key":"lang","value":"de","description":"(optional) Language code."},{"key":"locationId","value":"","description":"(optional) Hierarchical location ID.","disabled":true},{"key":"locationIdFilterType","value":"parent","description":"(optional) `parent` or `exact`. Default: `exact`.","disabled":true},{"key":"timeFormat","value":"iso-8601","description":"(optional) `unix-timestamp-seconds` (default), `unix-timestamp-milliseconds`, or `iso-8601`."},{"key":"dataPointFormat","value":"raw","description":"(optional) `raw` (default) or `localized`.","disabled":true},{"key":"convertToNumber","value":"true","description":"(optional) Convert values to numbers."},{"key":"aggregate","value":"year","description":"(optional) `hour`, `day`, `year`, or `all`. Note: `none` and `15m` are not available here."},{"key":"dateFrom","value":"","description":"(optional) Unix timestamp in seconds.","disabled":true},{"key":"dateTo","value":"","description":"(optional) Unix timestamp in seconds.","disabled":true},{"key":"virtualDevices","value":"true","description":"(optional) Include virtual devices. Default: `false`.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"1000","description":"(optional) Page size (1–10000). Default: `100`."}]},"description":"Returns data point logs across multiple devices, filtered by roles. The `roles` parameter is required.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.dataPoints** | object | | Object keyed by data point UUID, each value is a data point metadata object. |\n| **result.logs** | object | | Object keyed by data point UUID, each value is an array of `[timestamp, value]` pairs. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"dataPoints\": {\n      \"dp-uuid-1\": {\n        \"label\": \"Supply Temperature\",\n        \"unit\": \"\\u00b0C\",\n        \"role\": 201014\n      }\n    },\n    \"logs\": {\n      \"dp-uuid-1\": [\n        [\n          1700000000,\n          45.3\n        ],\n        [\n          1700003600,\n          44.8\n        ]\n      ]\n    },\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"}],"_postman_id":"dc997f93-0ef1-4441-b5b9-927b1097c8ff"},{"name":"Get statistics","id":"a9c88d68-e992-4178-bcc3-23639a21c3f3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/statistics","description":"<p>Returns aggregate device statistics (counts by severity/type).</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.count</strong></td>\n<td>integer</td>\n<td><code>150</code></td>\n<td>Total device count.</td>\n</tr>\n<tr>\n<td><strong>result.criticalCount</strong></td>\n<td>integer</td>\n<td><code>2</code></td>\n<td>Devices with critical status.</td>\n</tr>\n<tr>\n<td><strong>result.errorCount</strong></td>\n<td>integer</td>\n<td><code>5</code></td>\n<td>Devices with error status.</td>\n</tr>\n<tr>\n<td><strong>result.warningCount</strong></td>\n<td>integer</td>\n<td><code>3</code></td>\n<td>Devices with warnings.</td>\n</tr>\n<tr>\n<td><strong>result.offlineCount</strong></td>\n<td>integer</td>\n<td><code>8</code></td>\n<td>Offline devices.</td>\n</tr>\n<tr>\n<td><strong>result.unconfiguredCount</strong></td>\n<td>integer</td>\n<td><code>4</code></td>\n<td>Unconfigured devices.</td>\n</tr>\n<tr>\n<td><strong>result.groups</strong></td>\n<td>object</td>\n<td></td>\n<td>(optional) Present when <code>groupBy</code> is set. Keyed by group value, each with same count fields.</td>\n</tr>\n<tr>\n<td><strong>result.healthCheck</strong></td>\n<td>object</td>\n<td></td>\n<td>(optional) Present when <code>includeHealthCheck=true</code>. See <code>Get health check</code>.</td>\n</tr>\n<tr>\n<td><strong>result.unassignedGateways</strong></td>\n<td>array</td>\n<td></td>\n<td>(optional) Present when <code>unassignedGateways=true</code>. Array of gateway objects with nested <code>devices</code> count map.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices","statistics"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Comma-separated location IDs.</p>\n","type":"text/plain"},"key":"locationId","value":""},{"disabled":true,"description":{"content":"<p>(optional) <code>parent</code> or <code>exact</code>.</p>\n","type":"text/plain"},"key":"locationIdFilterType","value":"parent"},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated numeric role IDs.</p>\n","type":"text/plain"},"key":"roles","value":""},{"disabled":true,"description":{"content":"<p>(optional) Group results by field.</p>\n","type":"text/plain"},"key":"groupBy","value":""},{"disabled":true,"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Include unassigned gateways. Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"unassignedGateways","value":"1"},{"disabled":true,"description":{"content":"<p>(optional) Include health check diagnostics. Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"includeHealthCheck","value":"1"}],"variable":[]}},"response":[{"id":"474924f1-61ee-4141-ae14-3409da940f77","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/statistics","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices","statistics"],"query":[{"key":"locationId","value":"","description":"(optional) Comma-separated location IDs.","disabled":true},{"key":"locationIdFilterType","value":"parent","description":"(optional) `parent` or `exact`.","disabled":true},{"key":"roles","value":"","description":"(optional) Comma-separated numeric role IDs.","disabled":true},{"key":"groupBy","value":"","description":"(optional) Group results by field.","disabled":true},{"key":"lang","value":"en-US","description":"(optional) Language code.","disabled":true},{"key":"unassignedGateways","value":"1","description":"(optional) Include unassigned gateways. Default: `0`.","disabled":true},{"key":"includeHealthCheck","value":"1","description":"(optional) Include health check diagnostics. Default: `0`.","disabled":true}]},"description":"Returns aggregate device statistics (counts by severity/type).\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.count** | integer | `150` | Total device count. |\n| **result.criticalCount** | integer | `2` | Devices with critical status. |\n| **result.errorCount** | integer | `5` | Devices with error status. |\n| **result.warningCount** | integer | `3` | Devices with warnings. |\n| **result.offlineCount** | integer | `8` | Offline devices. |\n| **result.unconfiguredCount** | integer | `4` | Unconfigured devices. |\n| **result.groups** | object | | (optional) Present when `groupBy` is set. Keyed by group value, each with same count fields. |\n| **result.healthCheck** | object | | (optional) Present when `includeHealthCheck=true`. See `Get health check`. |\n| **result.unassignedGateways** | array | | (optional) Present when `unassignedGateways=true`. Array of gateway objects with nested `devices` count map. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"count\": 150,\n    \"criticalCount\": 2,\n    \"errorCount\": 5,\n    \"warningCount\": 3,\n    \"offlineCount\": 8,\n    \"unconfiguredCount\": 4\n  }\n}"}],"_postman_id":"a9c88d68-e992-4178-bcc3-23639a21c3f3"},{"name":"Get health check","id":"a606b76b-3741-42d6-860a-4736c38c2be6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/health-check?lang=de-DE","description":"<p>Runs comprehensive per-device diagnostics and returns issues grouped by location. Required for &gt;10000 devices: provide a <code>locationId</code> filter.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.totalDevices</strong></td>\n<td>integer</td>\n<td><code>150</code></td>\n<td>Total devices checked.</td>\n</tr>\n<tr>\n<td><strong>result.totalErrors</strong></td>\n<td>integer</td>\n<td><code>12</code></td>\n<td>Total devices with issues.</td>\n</tr>\n<tr>\n<td><strong>result.totalUnconfigured</strong></td>\n<td>integer</td>\n<td><code>3</code></td>\n<td>Total unconfigured devices.</td>\n</tr>\n<tr>\n<td><strong>result.locations</strong></td>\n<td>object</td>\n<td></td>\n<td>Object keyed by location ID.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"location-object\">Location object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>totalDevices</strong></td>\n<td>integer</td>\n<td><code>50</code></td>\n<td>Devices at this location.</td>\n</tr>\n<tr>\n<td><strong>totalErrors</strong></td>\n<td>integer</td>\n<td><code>5</code></td>\n<td>Devices with issues.</td>\n</tr>\n<tr>\n<td><strong>totalUnconfigured</strong></td>\n<td>integer</td>\n<td><code>1</code></td>\n<td>Unconfigured devices.</td>\n</tr>\n<tr>\n<td><strong>ok</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td><code>true</code> if no issues found.</td>\n</tr>\n<tr>\n<td><strong>fullyConfigured</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td><code>true</code> if all devices configured.</td>\n</tr>\n<tr>\n<td><strong>devices</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of device health entries (only devices with issues, or all if <code>includeOk=true</code>).</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"device-health-entry\">Device health entry</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>deviceId</strong></td>\n<td>UUID</td>\n<td><code>\"device-uuid\"</code></td>\n<td>Device UUID.</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td>Serial number.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Optimizer 1\"</code></td>\n<td>Display name.</td>\n</tr>\n<tr>\n<td><strong>deviceType</strong></td>\n<td>string</td>\n<td><code>\"S1\"</code></td>\n<td>Device family.</td>\n</tr>\n<tr>\n<td><strong>deviceTypeId</strong></td>\n<td>string</td>\n<td><code>\"s1-08-01\"</code></td>\n<td>Device type identifier.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Location.</td>\n</tr>\n<tr>\n<td><strong>offline</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Offline flag.</td>\n</tr>\n<tr>\n<td><strong>unconfigured</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Unconfigured flag.</td>\n</tr>\n<tr>\n<td><strong>lastPacket</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>issues</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of issue objects.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"issue-object\">Issue object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>code</strong></td>\n<td>string</td>\n<td><code>\"noRecentPacket\"</code></td>\n<td>Issue code: <code>offline</code>, <code>noRecentPacket</code>, <code>lowRssi</code>, <code>unconfigured</code>, <code>highTelegramLoss</code>, <code>highTelegramRepetitions</code>, <code>dataGaps</code>, <code>lowRsrp</code>, <code>lowRsrq</code>, <code>highCoverageEnhancement</code>, <code>highNbiotResets</code>, <code>highPacketGaps</code>, <code>pressureOutOfRange</code>, <code>dualtempNotMounted</code>, <code>highOutsideTemp</code>.</td>\n</tr>\n<tr>\n<td><strong>severity</strong></td>\n<td>string</td>\n<td><code>\"error\"</code></td>\n<td><code>\"error\"</code> or <code>\"info\"</code>.</td>\n</tr>\n<tr>\n<td><strong>message</strong></td>\n<td>string</td>\n<td><code>\"Kein aktuelles Paket\"</code></td>\n<td>Localized issue description.</td>\n</tr>\n<tr>\n<td><strong>value</strong></td>\n<td>variant</td>\n<td><code>-92</code></td>\n<td>(optional) Measured value that triggered the issue.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h4 id=\"workflow-health-check-for-a-gateway-by-serial-number\">Workflow: Health check for a gateway by serial number</h4>\n<p>If you only have the gateway serial number and a <strong>system provider</strong> API key, follow these steps:</p>\n<p><strong>Step 1 — Find the business partner</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /modules/c1-device-management/gateways?search=G100AABBCCDD\nC1-BUSINESS-PARTNER: 0\n</code></pre><p>The response contains <code>businessPartnerId</code> (the BP that owns the gateway) and <code>assigned: true/false</code>.</p>\n<p><strong>Step 2 — Find the gateway's location</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /modules/c1-device-management/devices?search=G100AABBCCDD\nC1-BUSINESS-PARTNER: &lt;businessPartnerId from step 1&gt;\n</code></pre><p>The gateway device object contains <code>locationId</code> (e.g., <code>1:WE-01</code>).</p>\n<p><strong>Step 3 — Run the health check</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>GET /modules/c1-device-management/devices/health-check?locationId=1:WE-01\nC1-BUSINESS-PARTNER: &lt;businessPartnerId from step 1&gt;\n</code></pre><p>This returns diagnostics for all devices at the gateway's location. Omit <code>locationId</code> to check all devices of the business partner.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices","health-check"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Hierarchical location ID. Required when &gt;10000 devices exist.</p>\n","type":"text/plain"},"key":"locationId","value":""},{"disabled":true,"description":{"content":"<p>(optional) Include devices without issues. Default: <code>false</code>.</p>\n","type":"text/plain"},"key":"includeOk","value":"true"},{"description":{"content":"<p>(optional) Language for issue messages. Default: <code>de-DE</code>.</p>\n","type":"text/plain"},"key":"lang","value":"de-DE"}],"variable":[]}},"response":[{"id":"199b410a-c961-4278-809d-c8ab63ad436c","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/health-check?lang=de-DE","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices","health-check"],"query":[{"key":"locationId","value":"","description":"(optional) Hierarchical location ID. Required when >10000 devices exist.","disabled":true},{"key":"includeOk","value":"true","description":"(optional) Include devices without issues. Default: `false`.","disabled":true},{"key":"lang","value":"de-DE","description":"(optional) Language for issue messages. Default: `de-DE`."}]},"description":"Runs comprehensive per-device diagnostics and returns issues grouped by location. Required for >10000 devices: provide a `locationId` filter.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.totalDevices** | integer | `150` | Total devices checked. |\n| **result.totalErrors** | integer | `12` | Total devices with issues. |\n| **result.totalUnconfigured** | integer | `3` | Total unconfigured devices. |\n| **result.locations** | object | | Object keyed by location ID. |\n\n##### Location object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **totalDevices** | integer | `50` | Devices at this location. |\n| **totalErrors** | integer | `5` | Devices with issues. |\n| **totalUnconfigured** | integer | `1` | Unconfigured devices. |\n| **ok** | boolean | `false` | `true` if no issues found. |\n| **fullyConfigured** | boolean | `false` | `true` if all devices configured. |\n| **devices** | array | | Array of device health entries (only devices with issues, or all if `includeOk=true`). |\n\n##### Device health entry\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **deviceId** | UUID | `\"device-uuid\"` | Device UUID. |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Serial number. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **deviceType** | string | `\"S1\"` | Device family. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | Device type identifier. |\n| **locationId** | string | `\"1:WE-01.100\"` | Location. |\n| **offline** | boolean | `false` | Offline flag. |\n| **unconfigured** | boolean | `false` | Unconfigured flag. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds. |\n| **issues** | array | | Array of issue objects. |\n\n##### Issue object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **code** | string | `\"noRecentPacket\"` | Issue code: `offline`, `noRecentPacket`, `lowRssi`, `unconfigured`, `highTelegramLoss`, `highTelegramRepetitions`, `dataGaps`, `lowRsrp`, `lowRsrq`, `highCoverageEnhancement`, `highNbiotResets`, `highPacketGaps`, `pressureOutOfRange`, `dualtempNotMounted`, `highOutsideTemp`. |\n| **severity** | string | `\"error\"` | `\"error\"` or `\"info\"`. |\n| **message** | string | `\"Kein aktuelles Paket\"` | Localized issue description. |\n| **value** | variant | `-92` | (optional) Measured value that triggered the issue. |\n\n---\n\n#### Workflow: Health check for a gateway by serial number\n\nIf you only have the gateway serial number and a **system provider** API key, follow these steps:\n\n**Step 1 — Find the business partner**\n\n```\nGET /modules/c1-device-management/gateways?search=G100AABBCCDD\nC1-BUSINESS-PARTNER: 0\n```\n\nThe response contains `businessPartnerId` (the BP that owns the gateway) and `assigned: true/false`.\n\n**Step 2 — Find the gateway's location**\n\n```\nGET /modules/c1-device-management/devices?search=G100AABBCCDD\nC1-BUSINESS-PARTNER: <businessPartnerId from step 1>\n```\n\nThe gateway device object contains `locationId` (e.g., `1:WE-01`).\n\n**Step 3 — Run the health check**\n\n```\nGET /modules/c1-device-management/devices/health-check?locationId=1:WE-01\nC1-BUSINESS-PARTNER: <businessPartnerId from step 1>\n```\n\nThis returns diagnostics for all devices at the gateway's location. Omit `locationId` to check all devices of the business partner."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"totalDevices\": 150,\n    \"totalErrors\": 12,\n    \"totalUnconfigured\": 3,\n    \"locations\": {\n      \"1:WE-01.100\": {\n        \"totalDevices\": 5,\n        \"totalErrors\": 2,\n        \"totalUnconfigured\": 0,\n        \"ok\": false,\n        \"fullyConfigured\": true,\n        \"devices\": [\n          {\n            \"deviceId\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n            \"serialNumber\": \"S108AABBCCDD\",\n            \"name\": \"Optimizer 1\",\n            \"deviceType\": \"S1\",\n            \"deviceTypeId\": \"s1-08-01\",\n            \"locationId\": \"1:WE-01.100\",\n            \"offline\": false,\n            \"unconfigured\": false,\n            \"lastPacket\": 1700000000,\n            \"issues\": [\n              {\n                \"code\": \"noRecentPacket\",\n                \"severity\": \"error\",\n                \"message\": \"Kein aktuelles Paket\"\n              },\n              {\n                \"code\": \"lowRssi\",\n                \"severity\": \"error\",\n                \"message\": \"Niedriger RSSI\",\n                \"value\": -92\n              }\n            ]\n          }\n        ]\n      }\n    }\n  }\n}"},{"id":"fbfee999-7389-4d8a-a065-fc9267199f34","name":"Too many devices","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/health-check?lang=de-DE","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices","health-check"],"query":[{"key":"locationId","value":"","description":"(optional) Hierarchical location ID. Required when >10000 devices exist.","disabled":true},{"key":"includeOk","value":"true","description":"(optional) Include devices without issues. Default: `false`.","disabled":true},{"key":"lang","value":"de-DE","description":"(optional) Language for issue messages. Default: `de-DE`."}]},"description":"Runs comprehensive per-device diagnostics and returns issues grouped by location. Required for >10000 devices: provide a `locationId` filter.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.totalDevices** | integer | `150` | Total devices checked. |\n| **result.totalErrors** | integer | `12` | Total devices with issues. |\n| **result.totalUnconfigured** | integer | `3` | Total unconfigured devices. |\n| **result.locations** | object | | Object keyed by location ID. |\n\n##### Location object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **totalDevices** | integer | `50` | Devices at this location. |\n| **totalErrors** | integer | `5` | Devices with issues. |\n| **totalUnconfigured** | integer | `1` | Unconfigured devices. |\n| **ok** | boolean | `false` | `true` if no issues found. |\n| **fullyConfigured** | boolean | `false` | `true` if all devices configured. |\n| **devices** | array | | Array of device health entries (only devices with issues, or all if `includeOk=true`). |\n\n##### Device health entry\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **deviceId** | UUID | `\"device-uuid\"` | Device UUID. |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Serial number. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **deviceType** | string | `\"S1\"` | Device family. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | Device type identifier. |\n| **locationId** | string | `\"1:WE-01.100\"` | Location. |\n| **offline** | boolean | `false` | Offline flag. |\n| **unconfigured** | boolean | `false` | Unconfigured flag. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds. |\n| **issues** | array | | Array of issue objects. |\n\n##### Issue object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **code** | string | `\"noRecentPacket\"` | Issue code: `offline`, `noRecentPacket`, `lowRssi`, `unconfigured`, `highTelegramLoss`, `highTelegramRepetitions`, `dataGaps`, `lowRsrp`, `lowRsrq`, `highCoverageEnhancement`, `highNbiotResets`, `highPacketGaps`, `pressureOutOfRange`, `dualtempNotMounted`, `highOutsideTemp`. |\n| **severity** | string | `\"error\"` | `\"error\"` or `\"info\"`. |\n| **message** | string | `\"Kein aktuelles Paket\"` | Localized issue description. |\n| **value** | variant | `-92` | (optional) Measured value that triggered the issue. |\n\n---\n\n#### Workflow: Health check for a gateway by serial number\n\nIf you only have the gateway serial number and a **system provider** API key, follow these steps:\n\n**Step 1 — Find the business partner**\n\n```\nGET /modules/c1-device-management/gateways?search=G100AABBCCDD\nC1-BUSINESS-PARTNER: 0\n```\n\nThe response contains `businessPartnerId` (the BP that owns the gateway) and `assigned: true/false`.\n\n**Step 2 — Find the gateway's location**\n\n```\nGET /modules/c1-device-management/devices?search=G100AABBCCDD\nC1-BUSINESS-PARTNER: <businessPartnerId from step 1>\n```\n\nThe gateway device object contains `locationId` (e.g., `1:WE-01`).\n\n**Step 3 — Run the health check**\n\n```\nGET /modules/c1-device-management/devices/health-check?locationId=1:WE-01\nC1-BUSINESS-PARTNER: <businessPartnerId from step 1>\n```\n\nThis returns diagnostics for all devices at the gateway's location. Omit `locationId` to check all devices of the business partner."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"too_many_devices\",\n  \"description\": \"More than 10000 devices found. Please provide a locationId filter.\"\n}"}],"_postman_id":"a606b76b-3741-42d6-860a-4736c38c2be6"},{"name":"Get devices","id":"2e71da01-85cb-4ba7-9ed6-1d2c3ad815e6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices?lang=en-US&orderBy=id&ascending=true&limit=100","description":"<p>Returns a paginated list of devices for the current business partner.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.devices</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of device objects. When <code>groupBy=locationId</code>, this is an object keyed by location ID instead.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"device-object\">Device object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"d23d6fd0-...\"</code></td>\n<td>The device UUID.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"bp-uuid\"</code></td>\n<td>Business partner that owns this device.</td>\n</tr>\n<tr>\n<td><strong>type</strong></td>\n<td>string</td>\n<td><code>\"S1\"</code></td>\n<td>Device family (<code>G1</code>, <code>S1</code>, <code>V1</code>).</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td>Device serial number.</td>\n</tr>\n<tr>\n<td><strong>deviceTypeId</strong></td>\n<td>string</td>\n<td><code>\"s1-08-01\"</code></td>\n<td>(Sensaru devices only) Device type identifier.</td>\n</tr>\n<tr>\n<td><strong>deviceType</strong></td>\n<td>integer</td>\n<td><code>8</code></td>\n<td>(Sensaru devices only) Numeric device type from serial.</td>\n</tr>\n<tr>\n<td><strong>operationMode</strong></td>\n<td>integer</td>\n<td><code>1</code></td>\n<td>(Sensaru devices only) Current operation mode.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Optimizer 1\"</code></td>\n<td>Display name.</td>\n</tr>\n<tr>\n<td><strong>notes</strong></td>\n<td>string</td>\n<td><code>\"Floor 2\"</code></td>\n<td>(optional) Free-text notes.</td>\n</tr>\n<tr>\n<td><strong>isSensaruDevice</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether this is a Sensaru device.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Hierarchical asset location.</td>\n</tr>\n<tr>\n<td><strong>locationName</strong></td>\n<td>string</td>\n<td><code>\"Building A\"</code></td>\n<td>Location display name.</td>\n</tr>\n<tr>\n<td><strong>roles</strong></td>\n<td>array</td>\n<td><code>[201014]</code></td>\n<td>Numeric role IDs.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"energy\"]</code></td>\n<td>User-defined tags.</td>\n</tr>\n<tr>\n<td><strong>status</strong></td>\n<td>string</td>\n<td><code>\"online\"</code></td>\n<td><code>\"online\"</code> or <code>\"offline\"</code>.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinates</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from asset.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinatesZip</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from ZIP geocoding.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[{\"street\": \"...\", ...}]</code></td>\n<td>Address objects.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Custom metadata.</td>\n</tr>\n<tr>\n<td><strong>settings</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Device-specific settings.</td>\n</tr>\n<tr>\n<td><strong>unconfigured</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>(optional) Only present if <code>true</code>.</td>\n</tr>\n<tr>\n<td><strong>updatedAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>createdAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>lastPacket</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds of last received packet.</td>\n</tr>\n<tr>\n<td><strong>dataPoints</strong></td>\n<td>array</td>\n<td><code>[\"dp-uuid-1\"]</code></td>\n<td>Data point UUIDs belonging to this device.</td>\n</tr>\n<tr>\n<td><strong>configurationFields</strong></td>\n<td>array</td>\n<td></td>\n<td>(optional) Only when <code>configFields=true</code>. Array of field descriptors with <code>id</code>, <code>type</code>, <code>label</code>, <code>required</code>, <code>enum</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code for localized names.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Filter by hierarchical asset location ID.</p>\n","type":"text/plain"},"key":"locationId","value":""},{"disabled":true,"description":{"content":"<p>(optional) <code>parent</code> (include children) or <code>exact</code>. Default: inherits from locationId level.</p>\n","type":"text/plain"},"key":"locationIdFilterType","value":"parent"},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated numeric role IDs to filter by.</p>\n","type":"text/plain"},"key":"roles","value":""},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated tags to filter by.</p>\n","type":"text/plain"},"key":"tags","value":""},{"disabled":true,"description":{"content":"<p>(optional) Numeric device type code.</p>\n","type":"text/plain"},"key":"deviceType","value":""},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated operation mode IDs.</p>\n","type":"text/plain"},"key":"operationMode","value":""},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated status filters, e.g. <code>unconfigured</code>.</p>\n","type":"text/plain"},"key":"filter","value":""},{"disabled":true,"description":{"content":"<p>(optional) Include virtual devices. Default: <code>false</code>.</p>\n","type":"text/plain"},"key":"virtualDevices","value":"true"},{"disabled":true,"description":{"content":"<p>(optional) Full-text search across serial number and name.</p>\n","type":"text/plain"},"key":"search","value":""},{"disabled":true,"description":{"content":"<p>(optional) Include configuration fields in response. Default: <code>false</code>.</p>\n","type":"text/plain"},"key":"configFields","value":"true"},{"description":{"content":"<p>(optional) Sort field. Default: <code>id</code>.</p>\n","type":"text/plain"},"key":"orderBy","value":"id"},{"description":{"content":"<p>(optional) Sort direction. Default: <code>true</code>.</p>\n","type":"text/plain"},"key":"ascending","value":"true"},{"disabled":true,"description":{"content":"<p>(optional) Group results by field, e.g. <code>locationId</code>.</p>\n","type":"text/plain"},"key":"groupBy","value":"locationId"},{"disabled":true,"description":{"content":"<p>(optional) Include unassigned gateways. Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"unassignedGateways","value":"1"},{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor returned in <code>responseMetadata.nextKey</code>.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–10000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"100"}],"variable":[]}},"response":[{"id":"0304cbc5-99b6-4c4d-8126-0d478d206451","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices?lang=en-US&orderBy=id&ascending=true&limit=100","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code for localized names."},{"key":"locationId","value":"","description":"(optional) Filter by hierarchical asset location ID.","disabled":true},{"key":"locationIdFilterType","value":"parent","description":"(optional) `parent` (include children) or `exact`. Default: inherits from locationId level.","disabled":true},{"key":"roles","value":"","description":"(optional) Comma-separated numeric role IDs to filter by.","disabled":true},{"key":"tags","value":"","description":"(optional) Comma-separated tags to filter by.","disabled":true},{"key":"deviceType","value":"","description":"(optional) Numeric device type code.","disabled":true},{"key":"operationMode","value":"","description":"(optional) Comma-separated operation mode IDs.","disabled":true},{"key":"filter","value":"","description":"(optional) Comma-separated status filters, e.g. `unconfigured`.","disabled":true},{"key":"virtualDevices","value":"true","description":"(optional) Include virtual devices. Default: `false`.","disabled":true},{"key":"search","value":"","description":"(optional) Full-text search across serial number and name.","disabled":true},{"key":"configFields","value":"true","description":"(optional) Include configuration fields in response. Default: `false`.","disabled":true},{"key":"orderBy","value":"id","description":"(optional) Sort field. Default: `id`."},{"key":"ascending","value":"true","description":"(optional) Sort direction. Default: `true`."},{"key":"groupBy","value":"locationId","description":"(optional) Group results by field, e.g. `locationId`.","disabled":true},{"key":"unassignedGateways","value":"1","description":"(optional) Include unassigned gateways. Default: `0`.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor returned in `responseMetadata.nextKey`.","disabled":true},{"key":"limit","value":"100","description":"(optional) Page size (1–10000). Default: `100`."}]},"description":"Returns a paginated list of devices for the current business partner.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.devices** | array | | Array of device objects. When `groupBy=locationId`, this is an object keyed by location ID instead. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"devices\": [\n      {\n        \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n        \"businessPartnerId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n        \"type\": \"S1\",\n        \"serialNumber\": \"S108AABBCCDD\",\n        \"deviceTypeId\": \"s1-08-01\",\n        \"deviceType\": 8,\n        \"operationMode\": 1,\n        \"name\": \"Optimizer 1\",\n        \"isSensaruDevice\": true,\n        \"locationId\": \"1:WE-01.100\",\n        \"locationName\": \"Musterstr. 1\",\n        \"roles\": [\n          201014\n        ],\n        \"tags\": [],\n        \"status\": \"online\",\n        \"geoCoordinates\": [\n          9.99,\n          53.55\n        ],\n        \"updatedAt\": 1700000000,\n        \"createdAt\": 1699000000,\n        \"lastPacket\": 1700000000,\n        \"dataPoints\": [\n          \"dp-uuid-1\",\n          \"dp-uuid-2\"\n        ]\n      }\n    ],\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"},{"id":"bacd1676-b8ac-489a-a9f4-f568c290cb90","name":"No business partner context","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices?lang=en-US&orderBy=id&ascending=true&limit=100","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code for localized names."},{"key":"locationId","value":"","description":"(optional) Filter by hierarchical asset location ID.","disabled":true},{"key":"locationIdFilterType","value":"parent","description":"(optional) `parent` (include children) or `exact`. Default: inherits from locationId level.","disabled":true},{"key":"roles","value":"","description":"(optional) Comma-separated numeric role IDs to filter by.","disabled":true},{"key":"tags","value":"","description":"(optional) Comma-separated tags to filter by.","disabled":true},{"key":"deviceType","value":"","description":"(optional) Numeric device type code.","disabled":true},{"key":"operationMode","value":"","description":"(optional) Comma-separated operation mode IDs.","disabled":true},{"key":"filter","value":"","description":"(optional) Comma-separated status filters, e.g. `unconfigured`.","disabled":true},{"key":"virtualDevices","value":"true","description":"(optional) Include virtual devices. Default: `false`.","disabled":true},{"key":"search","value":"","description":"(optional) Full-text search across serial number and name.","disabled":true},{"key":"configFields","value":"true","description":"(optional) Include configuration fields in response. Default: `false`.","disabled":true},{"key":"orderBy","value":"id","description":"(optional) Sort field. Default: `id`."},{"key":"ascending","value":"true","description":"(optional) Sort direction. Default: `true`."},{"key":"groupBy","value":"locationId","description":"(optional) Group results by field, e.g. `locationId`.","disabled":true},{"key":"unassignedGateways","value":"1","description":"(optional) Include unassigned gateways. Default: `0`.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor returned in `responseMetadata.nextKey`.","disabled":true},{"key":"limit","value":"100","description":"(optional) Page size (1–10000). Default: `100`."}]},"description":"Returns a paginated list of devices for the current business partner.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.devices** | array | | Array of device objects. When `groupBy=locationId`, this is an object keyed by location ID instead. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"request_error\",\n  \"description\": \"No business partner specified.\"\n}"}],"_postman_id":"2e71da01-85cb-4ba7-9ed6-1d2c3ad815e6"},{"name":"Create device","id":"6e26388e-5ad4-43ad-94b1-64c54ac5d1ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"S108AABBCCDD\",\n  \"homeClient\": \"G100AABBCCDD\",\n  \"name\": \"Optimizer 1\",\n  \"notes\": \"\",\n  \"operationMode\": 1,\n  \"locationId\": \"1:WE-01.100\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices","description":"<p>Creates a new device (gateway or sensor).</p>\n<p><strong>Gateway (G1):</strong> Requires <code>serialNumber</code> and <code>publicCertificate</code>. Only system providers can create gateways (except virtual G1FF).</p>\n<p><strong>Sensor (S1/V1):</strong> Requires <code>serialNumber</code>, <code>homeClient</code> (gateway serial), <code>name</code>, and <code>operationMode</code>.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td></td>\n<td>(required) The device serial number. Converted to uppercase.</td>\n</tr>\n<tr>\n<td><strong>homeClient</strong></td>\n<td>string</td>\n<td><code>\"G100AABBCCDD\"</code></td>\n<td></td>\n<td>(required for sensors) Serial number of the gateway this sensor connects to.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Optimizer 1\"</code></td>\n<td><code>\"\"</code></td>\n<td>(required for sensors) Display name of the device.</td>\n</tr>\n<tr>\n<td><strong>notes</strong></td>\n<td>string</td>\n<td><code>\"Installed in basement\"</code></td>\n<td><code>\"\"</code></td>\n<td>(optional) Free-text notes.</td>\n</tr>\n<tr>\n<td><strong>operationMode</strong></td>\n<td>integer</td>\n<td><code>1</code></td>\n<td></td>\n<td>(required for sensors) The operation mode ID. Can also be passed as <code>measurement</code>.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td><code>\"\"</code></td>\n<td>(optional) Hierarchical asset location ID to assign the device to.</td>\n</tr>\n<tr>\n<td><strong>publicCertificate</strong></td>\n<td>string</td>\n<td><code>\"-----BEGIN CERTIFICATE-----\\n...\"</code></td>\n<td></td>\n<td>(required for gateways) PEM-encoded public certificate.</td>\n</tr>\n<tr>\n<td><strong>setupKey</strong></td>\n<td>string</td>\n<td><code>\"ABCD-1234\"</code></td>\n<td><em>(auto-generated)</em></td>\n<td>(optional, gateways only) Setup key. Auto-generated if omitted.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>For <strong>sensors</strong> (S1/V1): the result is the new device UUID as a string.</p>\n<p>For <strong>gateways</strong> (G1): the result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[]}},"response":[{"id":"b7c6f9fe-24a1-4ea2-8d2c-b6d696c60e1c","name":"Success (sensor)","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"S108AABBCCDD\",\n  \"homeClient\": \"G100AABBCCDD\",\n  \"name\": \"Optimizer 1\",\n  \"notes\": \"\",\n  \"operationMode\": 1,\n  \"locationId\": \"1:WE-01.100\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices","description":"Creates a new device (gateway or sensor).\n\n**Gateway (G1):** Requires `serialNumber` and `publicCertificate`. Only system providers can create gateways (except virtual G1FF).\n\n**Sensor (S1/V1):** Requires `serialNumber`, `homeClient` (gateway serial), `name`, and `operationMode`.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | | (required) The device serial number. Converted to uppercase. |\n| **homeClient** | string | `\"G100AABBCCDD\"` | | (required for sensors) Serial number of the gateway this sensor connects to. |\n| **name** | string | `\"Optimizer 1\"` | `\"\"` | (required for sensors) Display name of the device. |\n| **notes** | string | `\"Installed in basement\"` | `\"\"` | (optional) Free-text notes. |\n| **operationMode** | integer | `1` | | (required for sensors) The operation mode ID. Can also be passed as `measurement`. |\n| **locationId** | string | `\"1:WE-01.100\"` | `\"\"` | (optional) Hierarchical asset location ID to assign the device to. |\n| **publicCertificate** | string | `\"-----BEGIN CERTIFICATE-----\\n...\"` | | (required for gateways) PEM-encoded public certificate. |\n| **setupKey** | string | `\"ABCD-1234\"` | *(auto-generated)* | (optional, gateways only) Setup key. Auto-generated if omitted. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nFor **sensors** (S1/V1): the result is the new device UUID as a string.\n\nFor **gateways** (G1): the result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\"\n}"},{"id":"4b8afad8-5374-4583-a5fb-d74a5c235e52","name":"Success (gateway)","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"S108AABBCCDD\",\n  \"homeClient\": \"G100AABBCCDD\",\n  \"name\": \"Optimizer 1\",\n  \"notes\": \"\",\n  \"operationMode\": 1,\n  \"locationId\": \"1:WE-01.100\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices","description":"Creates a new device (gateway or sensor).\n\n**Gateway (G1):** Requires `serialNumber` and `publicCertificate`. Only system providers can create gateways (except virtual G1FF).\n\n**Sensor (S1/V1):** Requires `serialNumber`, `homeClient` (gateway serial), `name`, and `operationMode`.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | | (required) The device serial number. Converted to uppercase. |\n| **homeClient** | string | `\"G100AABBCCDD\"` | | (required for sensors) Serial number of the gateway this sensor connects to. |\n| **name** | string | `\"Optimizer 1\"` | `\"\"` | (required for sensors) Display name of the device. |\n| **notes** | string | `\"Installed in basement\"` | `\"\"` | (optional) Free-text notes. |\n| **operationMode** | integer | `1` | | (required for sensors) The operation mode ID. Can also be passed as `measurement`. |\n| **locationId** | string | `\"1:WE-01.100\"` | `\"\"` | (optional) Hierarchical asset location ID to assign the device to. |\n| **publicCertificate** | string | `\"-----BEGIN CERTIFICATE-----\\n...\"` | | (required for gateways) PEM-encoded public certificate. |\n| **setupKey** | string | `\"ABCD-1234\"` | *(auto-generated)* | (optional, gateways only) Setup key. Auto-generated if omitted. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nFor **sensors** (S1/V1): the result is the new device UUID as a string.\n\nFor **gateways** (G1): the result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"},{"id":"06824863-8cf3-4ba9-951e-a879d136d609","name":"Duplicate serial number","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"S108AABBCCDD\",\n  \"homeClient\": \"G100AABBCCDD\",\n  \"name\": \"Optimizer 1\",\n  \"notes\": \"\",\n  \"operationMode\": 1,\n  \"locationId\": \"1:WE-01.100\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices","description":"Creates a new device (gateway or sensor).\n\n**Gateway (G1):** Requires `serialNumber` and `publicCertificate`. Only system providers can create gateways (except virtual G1FF).\n\n**Sensor (S1/V1):** Requires `serialNumber`, `homeClient` (gateway serial), `name`, and `operationMode`.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | | (required) The device serial number. Converted to uppercase. |\n| **homeClient** | string | `\"G100AABBCCDD\"` | | (required for sensors) Serial number of the gateway this sensor connects to. |\n| **name** | string | `\"Optimizer 1\"` | `\"\"` | (required for sensors) Display name of the device. |\n| **notes** | string | `\"Installed in basement\"` | `\"\"` | (optional) Free-text notes. |\n| **operationMode** | integer | `1` | | (required for sensors) The operation mode ID. Can also be passed as `measurement`. |\n| **locationId** | string | `\"1:WE-01.100\"` | `\"\"` | (optional) Hierarchical asset location ID to assign the device to. |\n| **publicCertificate** | string | `\"-----BEGIN CERTIFICATE-----\\n...\"` | | (required for gateways) PEM-encoded public certificate. |\n| **setupKey** | string | `\"ABCD-1234\"` | *(auto-generated)* | (optional, gateways only) Setup key. Auto-generated if omitted. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nFor **sensors** (S1/V1): the result is the new device UUID as a string.\n\nFor **gateways** (G1): the result is an empty object `{}`."},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"request_error\",\n  \"description\": \"A device with this serial number already exists.\"\n}"}],"_postman_id":"6e26388e-5ad4-43ad-94b1-64c54ac5d1ba"},{"name":"Assign device","id":"70a532c8-8a7b-42f2-8512-5d1745fcaa70","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"G100AABBCCDD\",\n  \"setupKey\": \"ABCD-1234\",\n  \"name\": \"Gateway Keller\",\n  \"notes\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/assign?lang=en-US","description":"<p>Assigns a gateway to the current business partner. The gateway must exist and not be assigned yet.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"G100AABBCCDD\"</code></td>\n<td></td>\n<td>(required) Gateway serial number. Converted to uppercase. Must start with <code>G1</code>.</td>\n</tr>\n<tr>\n<td><strong>setupKey</strong></td>\n<td>string</td>\n<td><code>\"ABCD-1234\"</code></td>\n<td></td>\n<td>(required for non-system-provider users) The setup key of the gateway.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Gateway Keller\"</code></td>\n<td></td>\n<td>(required) Display name of the gateway.</td>\n</tr>\n<tr>\n<td><strong>notes</strong></td>\n<td>string</td>\n<td><code>\"Installed 2024-01\"</code></td>\n<td><code>\"\"</code></td>\n<td>(optional) Free-text notes.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is the assigned gateway as a device object.</p>\n<h5 id=\"device-object\">Device object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"d23d6fd0-...\"</code></td>\n<td>The device UUID.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>string</td>\n<td><code>\"bp-uuid\"</code></td>\n<td>Business partner that owns this device.</td>\n</tr>\n<tr>\n<td><strong>type</strong></td>\n<td>string</td>\n<td><code>\"S1\"</code></td>\n<td>Device family (<code>G1</code>, <code>S1</code>, <code>V1</code>).</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"S108AABBCCDD\"</code></td>\n<td>Device serial number.</td>\n</tr>\n<tr>\n<td><strong>deviceTypeId</strong></td>\n<td>string</td>\n<td><code>\"s1-08-01\"</code></td>\n<td>(Sensaru devices only) Device type identifier.</td>\n</tr>\n<tr>\n<td><strong>deviceType</strong></td>\n<td>integer</td>\n<td><code>8</code></td>\n<td>(Sensaru devices only) Numeric device type from serial.</td>\n</tr>\n<tr>\n<td><strong>operationMode</strong></td>\n<td>integer</td>\n<td><code>1</code></td>\n<td>(Sensaru devices only) Current operation mode.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Optimizer 1\"</code></td>\n<td>Display name.</td>\n</tr>\n<tr>\n<td><strong>notes</strong></td>\n<td>string</td>\n<td><code>\"Floor 2\"</code></td>\n<td>(optional) Free-text notes.</td>\n</tr>\n<tr>\n<td><strong>isSensaruDevice</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether this is a Sensaru device.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Hierarchical asset location.</td>\n</tr>\n<tr>\n<td><strong>locationName</strong></td>\n<td>string</td>\n<td><code>\"Building A\"</code></td>\n<td>Location display name.</td>\n</tr>\n<tr>\n<td><strong>roles</strong></td>\n<td>array</td>\n<td><code>[201014]</code></td>\n<td>Numeric role IDs.</td>\n</tr>\n<tr>\n<td><strong>tags</strong></td>\n<td>array</td>\n<td><code>[\"energy\"]</code></td>\n<td>User-defined tags.</td>\n</tr>\n<tr>\n<td><strong>status</strong></td>\n<td>string</td>\n<td><code>\"online\"</code></td>\n<td><code>\"online\"</code> or <code>\"offline\"</code>.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinates</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from asset.</td>\n</tr>\n<tr>\n<td><strong>geoCoordinatesZip</strong></td>\n<td>array</td>\n<td><code>[9.99, 53.55]</code></td>\n<td><code>[longitude, latitude]</code> from ZIP geocoding.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[{\"street\": \"...\", ...}]</code></td>\n<td>Address objects.</td>\n</tr>\n<tr>\n<td><strong>metadata</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Custom metadata.</td>\n</tr>\n<tr>\n<td><strong>settings</strong></td>\n<td>object</td>\n<td><code>{}</code></td>\n<td>(optional) Device-specific settings.</td>\n</tr>\n<tr>\n<td><strong>unconfigured</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>(optional) Only present if <code>true</code>.</td>\n</tr>\n<tr>\n<td><strong>updatedAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>createdAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>lastPacket</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds of last received packet.</td>\n</tr>\n<tr>\n<td><strong>dataPoints</strong></td>\n<td>array</td>\n<td><code>[\"dp-uuid-1\"]</code></td>\n<td>Data point UUIDs belonging to this device.</td>\n</tr>\n<tr>\n<td><strong>configurationFields</strong></td>\n<td>array</td>\n<td></td>\n<td>(optional) Only when <code>configFields=true</code>. Array of field descriptors with <code>id</code>, <code>type</code>, <code>label</code>, <code>required</code>, <code>enum</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices","assign"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"}],"variable":[]}},"response":[{"id":"de840099-c759-40af-9842-423537cacb55","name":"Success","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"G100AABBCCDD\",\n  \"setupKey\": \"ABCD-1234\",\n  \"name\": \"Gateway Keller\",\n  \"notes\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/assign?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices","assign"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."}]},"description":"Assigns a gateway to the current business partner. The gateway must exist and not be assigned yet.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **serialNumber** | string | `\"G100AABBCCDD\"` | | (required) Gateway serial number. Converted to uppercase. Must start with `G1`. |\n| **setupKey** | string | `\"ABCD-1234\"` | | (required for non-system-provider users) The setup key of the gateway. |\n| **name** | string | `\"Gateway Keller\"` | | (required) Display name of the gateway. |\n| **notes** | string | `\"Installed 2024-01\"` | `\"\"` | (optional) Free-text notes. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is the assigned gateway as a device object.\n\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n    \"type\": \"G1\",\n    \"serialNumber\": \"G100AABBCCDD\",\n    \"name\": \"Gateway Keller\",\n    \"isSensaruDevice\": true,\n    \"locationId\": \"\",\n    \"roles\": [\n      20300\n    ],\n    \"status\": \"online\",\n    \"updatedAt\": 1700000000,\n    \"createdAt\": 1699000000,\n    \"lastPacket\": 1700000000\n  }\n}"},{"id":"26cd3ee4-97a6-4edb-8de8-399bea1624e6","name":"Invalid setup key","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"G100AABBCCDD\",\n  \"setupKey\": \"ABCD-1234\",\n  \"name\": \"Gateway Keller\",\n  \"notes\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/devices/assign?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["devices","assign"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."}]},"description":"Assigns a gateway to the current business partner. The gateway must exist and not be assigned yet.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **serialNumber** | string | `\"G100AABBCCDD\"` | | (required) Gateway serial number. Converted to uppercase. Must start with `G1`. |\n| **setupKey** | string | `\"ABCD-1234\"` | | (required for non-system-provider users) The setup key of the gateway. |\n| **name** | string | `\"Gateway Keller\"` | | (required) Display name of the gateway. |\n| **notes** | string | `\"Installed 2024-01\"` | `\"\"` | (optional) Free-text notes. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is the assigned gateway as a device object.\n\n\n##### Device object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"d23d6fd0-...\"` | The device UUID. |\n| **businessPartnerId** | string | `\"bp-uuid\"` | Business partner that owns this device. |\n| **type** | string | `\"S1\"` | Device family (`G1`, `S1`, `V1`). |\n| **serialNumber** | string | `\"S108AABBCCDD\"` | Device serial number. |\n| **deviceTypeId** | string | `\"s1-08-01\"` | (Sensaru devices only) Device type identifier. |\n| **deviceType** | integer | `8` | (Sensaru devices only) Numeric device type from serial. |\n| **operationMode** | integer | `1` | (Sensaru devices only) Current operation mode. |\n| **name** | string | `\"Optimizer 1\"` | Display name. |\n| **notes** | string | `\"Floor 2\"` | (optional) Free-text notes. |\n| **isSensaruDevice** | boolean | `true` | Whether this is a Sensaru device. |\n| **locationId** | string | `\"1:WE-01.100\"` | Hierarchical asset location. |\n| **locationName** | string | `\"Building A\"` | Location display name. |\n| **roles** | array | `[201014]` | Numeric role IDs. |\n| **tags** | array | `[\"energy\"]` | User-defined tags. |\n| **status** | string | `\"online\"` | `\"online\"` or `\"offline\"`. |\n| **geoCoordinates** | array | `[9.99, 53.55]` | `[longitude, latitude]` from asset. |\n| **geoCoordinatesZip** | array | `[9.99, 53.55]` | `[longitude, latitude]` from ZIP geocoding. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Address objects. |\n| **metadata** | object | `{}` | (optional) Custom metadata. |\n| **settings** | object | `{}` | (optional) Device-specific settings. |\n| **unconfigured** | boolean | `true` | (optional) Only present if `true`. |\n| **updatedAt** | integer | `1700000000` | Unix epoch seconds. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastPacket** | integer | `1700000000` | Unix epoch seconds of last received packet. |\n| **dataPoints** | array | `[\"dp-uuid-1\"]` | Data point UUIDs belonging to this device. |\n| **configurationFields** | array | | (optional) Only when `configFields=true`. Array of field descriptors with `id`, `type`, `label`, `required`, `enum`. |"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"request_error\",\n  \"description\": \"Setup key is invalid.\"\n}"}],"_postman_id":"70a532c8-8a7b-42f2-8512-5d1745fcaa70"}],"id":"7fd79249-e72e-4940-b046-5523807b0fae","_postman_id":"7fd79249-e72e-4940-b046-5523807b0fae","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"service-messages","item":[{"name":"{messageId}","item":[{"name":"Get service message","id":"ee3d59c9-6250-4a07-9cdc-5316c8f6096f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/service-messages/:messageId?lang=en-US","description":"<p>Returns a single service message by ID.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is a single service message object (see <code>Get service messages</code> for field descriptions).</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["service-messages",":messageId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"}],"variable":[{"id":"8a468d1d-276c-4cf7-a087-c41298dff5c2","description":{"content":"<p>(required) The service message UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"messageId"}]}},"response":[{"id":"772f16a2-4d99-484e-a2f4-55bf816331b5","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/service-messages/:messageId?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["service-messages",":messageId"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."}],"variable":[{"id":"8a468d1d-276c-4cf7-a087-c41298dff5c2","key":"messageId","value":"","description":"(required) The service message UUID."}]},"description":"Returns a single service message by ID.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is a single service message object (see `Get service messages` for field descriptions)."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"id\": \"a1b2c3d4-e5f6-7890-abcd-000000000001\",\n    \"createdAt\": 1700000000,\n    \"lastUpdate\": 1700003600,\n    \"deviceId\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n    \"dataPointId\": \"dp-uuid-1\",\n    \"roles\": [\n      201014\n    ],\n    \"locationId\": \"1:WE-01.100\",\n    \"priority\": \"error\",\n    \"isSticky\": false,\n    \"message\": \"Supply temperature sensor offline\"\n  }\n}"},{"id":"8d26f5f8-18ef-492e-a3c9-56b8a10f8111","name":"Not found","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/service-messages/:messageId?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["service-messages",":messageId"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."}],"variable":[{"id":"8a468d1d-276c-4cf7-a087-c41298dff5c2","key":"messageId","value":"","description":"(required) The service message UUID."}]},"description":"Returns a single service message by ID.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is a single service message object (see `Get service messages` for field descriptions)."},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"not_found\",\n  \"description\": \"The requested resource was not found.\"\n}"}],"_postman_id":"ee3d59c9-6250-4a07-9cdc-5316c8f6096f"}],"id":"6c8c7e7b-ee31-48fa-a0b0-bc1384d30404","_postman_id":"6c8c7e7b-ee31-48fa-a0b0-bc1384d30404","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get service messages","id":"e24b9bd0-d503-43ff-8b04-598d592308af","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/service-messages?limit=100","description":"<p>Returns service messages across all devices for the current business partner.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.serviceMessages</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of service message objects.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"service-message-object\">Service message object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"msg-uuid\"</code></td>\n<td>Service message ID.</td>\n</tr>\n<tr>\n<td><strong>createdAt</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>lastUpdate</strong></td>\n<td>integer</td>\n<td><code>1700003600</code></td>\n<td>Unix epoch seconds.</td>\n</tr>\n<tr>\n<td><strong>deviceId</strong></td>\n<td>UUID</td>\n<td><code>\"device-uuid\"</code></td>\n<td>Device that triggered the message.</td>\n</tr>\n<tr>\n<td><strong>dataPointId</strong></td>\n<td>UUID</td>\n<td><code>\"dp-uuid\"</code></td>\n<td>Related data point.</td>\n</tr>\n<tr>\n<td><strong>roles</strong></td>\n<td>array</td>\n<td><code>[201014, 800001]</code></td>\n<td>Associated role IDs.</td>\n</tr>\n<tr>\n<td><strong>locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01.100\"</code></td>\n<td>Location of the device.</td>\n</tr>\n<tr>\n<td><strong>addresses</strong></td>\n<td>array</td>\n<td><code>[{\"street\": \"...\", ...}]</code></td>\n<td>Device addresses.</td>\n</tr>\n<tr>\n<td><strong>priority</strong></td>\n<td>string</td>\n<td><code>\"error\"</code></td>\n<td>Severity: <code>\"critical\"</code>, <code>\"error\"</code>, <code>\"warning\"</code>, <code>\"info\"</code>.</td>\n</tr>\n<tr>\n<td><strong>isSticky</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether the message persists after resolution.</td>\n</tr>\n<tr>\n<td><strong>message</strong></td>\n<td>string</td>\n<td><code>\"Sensor offline\"</code></td>\n<td>Localized message text.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["service-messages"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Hierarchical location ID.</p>\n","type":"text/plain"},"key":"locationId","value":""},{"disabled":true,"description":{"content":"<p>(optional) <code>parent</code> or <code>exact</code>.</p>\n","type":"text/plain"},"key":"locationIdFilterType","value":"parent"},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated role IDs.</p>\n","type":"text/plain"},"key":"roles","value":""},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated status filters.</p>\n","type":"text/plain"},"key":"filter","value":""},{"disabled":true,"description":{"content":"<p>(optional) Full-text search.</p>\n","type":"text/plain"},"key":"search","value":""},{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–1000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"100"}],"variable":[]}},"response":[{"id":"0621598e-0f6d-418b-81ad-ee845a434638","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/service-messages?limit=100","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["service-messages"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code.","disabled":true},{"key":"locationId","value":"","description":"(optional) Hierarchical location ID.","disabled":true},{"key":"locationIdFilterType","value":"parent","description":"(optional) `parent` or `exact`.","disabled":true},{"key":"roles","value":"","description":"(optional) Comma-separated role IDs.","disabled":true},{"key":"filter","value":"","description":"(optional) Comma-separated status filters.","disabled":true},{"key":"search","value":"","description":"(optional) Full-text search.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"100","description":"(optional) Page size (1–1000). Default: `100`."}]},"description":"Returns service messages across all devices for the current business partner.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.serviceMessages** | array | | Array of service message objects. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |\n\n##### Service message object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"msg-uuid\"` | Service message ID. |\n| **createdAt** | integer | `1700000000` | Unix epoch seconds. |\n| **lastUpdate** | integer | `1700003600` | Unix epoch seconds. |\n| **deviceId** | UUID | `\"device-uuid\"` | Device that triggered the message. |\n| **dataPointId** | UUID | `\"dp-uuid\"` | Related data point. |\n| **roles** | array | `[201014, 800001]` | Associated role IDs. |\n| **locationId** | string | `\"1:WE-01.100\"` | Location of the device. |\n| **addresses** | array | `[{\"street\": \"...\", ...}]` | Device addresses. |\n| **priority** | string | `\"error\"` | Severity: `\"critical\"`, `\"error\"`, `\"warning\"`, `\"info\"`. |\n| **isSticky** | boolean | `false` | Whether the message persists after resolution. |\n| **message** | string | `\"Sensor offline\"` | Localized message text. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"serviceMessages\": [\n      {\n        \"id\": \"a1b2c3d4-e5f6-7890-abcd-000000000001\",\n        \"createdAt\": 1700000000,\n        \"lastUpdate\": 1700003600,\n        \"deviceId\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n        \"dataPointId\": \"dp-uuid-1\",\n        \"roles\": [\n          201014\n        ],\n        \"locationId\": \"1:WE-01.100\",\n        \"priority\": \"error\",\n        \"isSticky\": false,\n        \"message\": \"Supply temperature sensor offline\"\n      }\n    ],\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"}],"_postman_id":"e24b9bd0-d503-43ff-8b04-598d592308af"}],"id":"ac087b7f-71c6-4386-81ba-a270fbc436ef","_postman_id":"ac087b7f-71c6-4386-81ba-a270fbc436ef","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"commissioning-cards","item":[{"name":"{cardId}","item":[{"name":"Get commissioning card","id":"feff2741-af06-4aba-ad1f-59881d7a36a8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards/:cardId","description":"<p>Returns a single commissioning card by ID.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is a single commissioning card object.</p>\n<h5 id=\"commissioning-card-object\">Commissioning card object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"04A3B2C1D2E3F4\"</code></td>\n<td>NFC card serial number.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Site Office\"</code></td>\n<td>Display name.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["commissioning-cards",":cardId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"cb644568-4783-42a7-9faa-f2dd84861f80","description":{"content":"<p>(required) The commissioning card UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"cardId"}]}},"response":[{"id":"1b846ecc-8fbb-4183-9290-e41258e846cb","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards/:cardId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["commissioning-cards",":cardId"],"variable":[{"id":"cb644568-4783-42a7-9faa-f2dd84861f80","key":"cardId","value":"","description":"(required) The commissioning card UUID."}]},"description":"Returns a single commissioning card by ID.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is a single commissioning card object.\n\n\n##### Commissioning card object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **serialNumber** | string | `\"04A3B2C1D2E3F4\"` | NFC card serial number. |\n| **name** | string | `\"Site Office\"` | Display name. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"serialNumber\": \"04A3B2C1D2E3F4\",\n    \"name\": \"Site Office\"\n  }\n}"}],"_postman_id":"feff2741-af06-4aba-ad1f-59881d7a36a8"},{"name":"Replace commissioning card","id":"1e18e282-c7d5-453e-9ceb-54d3dc9c1165","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Updated name\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards/:cardId","description":"<p>Replaces a commissioning card (full update).</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Updated name\"</code></td>\n<td></td>\n<td>(required) New display name.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["commissioning-cards",":cardId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"6cace7bb-8b79-4b62-92b7-66ecc656a822","description":{"content":"<p>(required) The commissioning card UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"cardId"}]}},"response":[{"id":"555d77ef-4f7b-4dc1-947d-4eeb2c031769","name":"Success","originalRequest":{"method":"PUT","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Updated name\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards/:cardId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["commissioning-cards",":cardId"],"variable":[{"id":"6cace7bb-8b79-4b62-92b7-66ecc656a822","key":"cardId","value":"","description":"(required) The commissioning card UUID."}]},"description":"Replaces a commissioning card (full update).\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **name** | string | `\"Updated name\"` | | (required) New display name. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"1e18e282-c7d5-453e-9ceb-54d3dc9c1165"},{"name":"Update commissioning card","id":"db3c6dbb-39fe-49bc-88b3-40f29e27ce08","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Updated name\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards/:cardId","description":"<p>Partially updates a commissioning card.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Updated name\"</code></td>\n<td></td>\n<td>(optional) New display name.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["commissioning-cards",":cardId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"6afa6ee3-9b9a-4986-9b8c-7d0e696e6189","description":{"content":"<p>(required) The commissioning card UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"cardId"}]}},"response":[{"id":"1d8b566a-1b3f-4050-b4f3-ecf74f2b6d58","name":"Success","originalRequest":{"method":"PATCH","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Updated name\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards/:cardId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["commissioning-cards",":cardId"],"variable":[{"id":"6afa6ee3-9b9a-4986-9b8c-7d0e696e6189","key":"cardId","value":"","description":"(required) The commissioning card UUID."}]},"description":"Partially updates a commissioning card.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **name** | string | `\"Updated name\"` | | (optional) New display name. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"db3c6dbb-39fe-49bc-88b3-40f29e27ce08"},{"name":"Delete commissioning card","id":"9adc9729-94f8-4880-8c72-8cab1c0ea770","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards/:cardId","description":"<p>Deletes a commissioning card.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["commissioning-cards",":cardId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"41ab66ff-c8b0-43f3-b8a3-23d57f6f5110","description":{"content":"<p>(required) The commissioning card UUID.</p>\n","type":"text/plain"},"type":"any","value":"","key":"cardId"}]}},"response":[{"id":"d536b98b-1eaf-4424-8794-f2e2a8b9859e","name":"Success","originalRequest":{"method":"DELETE","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards/:cardId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["commissioning-cards",":cardId"],"variable":[{"id":"41ab66ff-c8b0-43f3-b8a3-23d57f6f5110","key":"cardId","value":"","description":"(required) The commissioning card UUID."}]},"description":"Deletes a commissioning card.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"9adc9729-94f8-4880-8c72-8cab1c0ea770"}],"id":"a63e47c5-f335-44c0-8edf-f499e8376b67","_postman_id":"a63e47c5-f335-44c0-8edf-f499e8376b67","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get commissioning cards","id":"6446869c-6533-4e10-8d21-b7cd574dbb3a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards?limit=1000","description":"<p>Returns a paginated list of commissioning cards.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.commissioningCards</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of commissioning card objects.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"commissioning-card-object\">Commissioning card object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"04A3B2C1D2E3F4\"</code></td>\n<td>NFC card serial number.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Site Office\"</code></td>\n<td>Display name.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["commissioning-cards"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–1000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"1000"}],"variable":[]}},"response":[{"id":"c4e9b349-5464-422a-b741-a5f45b5a497a","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards?limit=1000","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["commissioning-cards"],"query":[{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"1000","description":"(optional) Page size (1–1000). Default: `100`."}]},"description":"Returns a paginated list of commissioning cards.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.commissioningCards** | array | | Array of commissioning card objects. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |\n\n##### Commissioning card object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **serialNumber** | string | `\"04A3B2C1D2E3F4\"` | NFC card serial number. |\n| **name** | string | `\"Site Office\"` | Display name. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"commissioningCards\": [\n      {\n        \"serialNumber\": \"04A3B2C1D2E3F4\",\n        \"name\": \"Site Office\"\n      }\n    ],\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"}],"_postman_id":"6446869c-6533-4e10-8d21-b7cd574dbb3a"},{"name":"Create commissioning card","id":"c2ac451d-a039-465e-bdbd-aa392834e7f7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"G100AABBCCDD\",\n  \"name\": \"Inbetriebnahme Geb\\u00e4ude A\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards","description":"<p>Creates a new commissioning card.</p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"G100AABBCCDD\"</code></td>\n<td></td>\n<td>(required) Gateway serial number to associate with the card.</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Inbetriebnahme Gebäude A\"</code></td>\n<td><code>\"\"</code></td>\n<td>(required) Display name of the commissioning card.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["commissioning-cards"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[]}},"response":[{"id":"417b4f92-c697-40f8-a50f-c919e7a55593","name":"Success","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"G100AABBCCDD\",\n  \"name\": \"Inbetriebnahme Geb\\u00e4ude A\"\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/commissioning-cards","description":"Creates a new commissioning card.\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **serialNumber** | string | `\"G100AABBCCDD\"` | | (required) Gateway serial number to associate with the card. |\n| **name** | string | `\"Inbetriebnahme Gebäude A\"` | `\"\"` | (required) Display name of the commissioning card. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"c2ac451d-a039-465e-bdbd-aa392834e7f7"}],"id":"648e2503-5902-4810-a444-36c5388fcd84","_postman_id":"648e2503-5902-4810-a444-36c5388fcd84","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"dashboards","item":[{"name":"Get app dashboard","id":"26c8310d-ebdb-4790-ad01-f3bc6c2f28eb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/app?locationId=1:WE-01&lang=en-US","description":"<p>Returns the app dashboard data for a location.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.metrics</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of metric widgets with <code>deviceId</code>, <code>value</code>, <code>label</code>, <code>unit</code>, <code>icon</code>.</td>\n</tr>\n<tr>\n<td><strong>result.diagram</strong></td>\n<td>object</td>\n<td></td>\n<td>Sankey-style diagram data with <code>state</code>, <code>left</code>, <code>right</code>, <code>center</code>, <code>top</code> sections.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["dashboards","app"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(required) Hierarchical location ID.</p>\n","type":"text/plain"},"key":"locationId","value":"1:WE-01"},{"description":{"content":"<p>(optional) Language code. Default: <code>en-US</code>.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Year filter.</p>\n","type":"text/plain"},"key":"year","value":""},{"disabled":true,"description":{"content":"<p>(optional) Month filter (0-11).</p>\n","type":"text/plain"},"key":"month","value":""},{"disabled":true,"description":{"content":"<p>(optional) Day filter.</p>\n","type":"text/plain"},"key":"day","value":""}],"variable":[]}},"response":[{"id":"a910fbc5-bdeb-495f-aa21-f9623154191a","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/app?locationId=1:WE-01&lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["dashboards","app"],"query":[{"key":"locationId","value":"1:WE-01","description":"(required) Hierarchical location ID."},{"key":"lang","value":"en-US","description":"(optional) Language code. Default: `en-US`."},{"key":"year","value":"","description":"(optional) Year filter.","disabled":true},{"key":"month","value":"","description":"(optional) Month filter (0-11).","disabled":true},{"key":"day","value":"","description":"(optional) Day filter.","disabled":true}]},"description":"Returns the app dashboard data for a location.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.metrics** | array | | Array of metric widgets with `deviceId`, `value`, `label`, `unit`, `icon`. |\n| **result.diagram** | object | | Sankey-style diagram data with `state`, `left`, `right`, `center`, `top` sections. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"metrics\": [\n      {\n        \"deviceId\": \"dev-uuid\",\n        \"value\": \"22.5 \\u00b0C\",\n        \"label\": \"S1 DualTemp\",\n        \"unit\": \"\\u00b0C\",\n        \"icon\": \"thermometer\"\n      }\n    ],\n    \"diagram\": {\n      \"state\": \"ok\",\n      \"left\": [],\n      \"right\": [],\n      \"center\": [],\n      \"top\": {}\n    }\n  }\n}"}],"_postman_id":"26c8310d-ebdb-4790-ad01-f3bc6c2f28eb"},{"name":"Get business UI dashboard","id":"07c522c7-87cf-4f25-b9f7-228614edbc25","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/business-ui?locationId=1:WE-01&lang=en-US","description":"<p>Returns the business UI dashboard data for a location.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.diagram</strong></td>\n<td>object</td>\n<td></td>\n<td>Diagram with <code>left</code>, <code>right</code>, <code>center</code>, <code>top</code> sections showing energy, CO2, efficiency.</td>\n</tr>\n<tr>\n<td><strong>result.powerConsumption</strong></td>\n<td>number</td>\n<td><code>2150</code></td>\n<td>Total power consumption in kWh.</td>\n</tr>\n<tr>\n<td><strong>result.waterConsumption</strong></td>\n<td>number</td>\n<td><code>450</code></td>\n<td>Total water consumption in m³.</td>\n</tr>\n<tr>\n<td><strong>result.heatConsumption</strong></td>\n<td>number</td>\n<td><code>8500</code></td>\n<td>Total heat consumption in kWh.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["dashboards","business-ui"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(required) Hierarchical location ID.</p>\n","type":"text/plain"},"key":"locationId","value":"1:WE-01"},{"description":{"content":"<p>(optional) Language code. Default: <code>en-US</code>.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Year filter.</p>\n","type":"text/plain"},"key":"year","value":""},{"disabled":true,"description":{"content":"<p>(optional) Month filter (0-11).</p>\n","type":"text/plain"},"key":"month","value":""},{"disabled":true,"description":{"content":"<p>(optional) Day filter.</p>\n","type":"text/plain"},"key":"day","value":""}],"variable":[]}},"response":[{"id":"b7f317c3-d748-48c6-85a7-aa802a113147","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/business-ui?locationId=1:WE-01&lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["dashboards","business-ui"],"query":[{"key":"locationId","value":"1:WE-01","description":"(required) Hierarchical location ID."},{"key":"lang","value":"en-US","description":"(optional) Language code. Default: `en-US`."},{"key":"year","value":"","description":"(optional) Year filter.","disabled":true},{"key":"month","value":"","description":"(optional) Month filter (0-11).","disabled":true},{"key":"day","value":"","description":"(optional) Day filter.","disabled":true}]},"description":"Returns the business UI dashboard data for a location.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.diagram** | object | | Diagram with `left`, `right`, `center`, `top` sections showing energy, CO2, efficiency. |\n| **result.powerConsumption** | number | `2150` | Total power consumption in kWh. |\n| **result.waterConsumption** | number | `450` | Total water consumption in m³. |\n| **result.heatConsumption** | number | `8500` | Total heat consumption in kWh. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"diagram\": {\n      \"left\": [],\n      \"right\": [],\n      \"center\": [],\n      \"top\": {}\n    },\n    \"powerConsumption\": 2150,\n    \"waterConsumption\": 450,\n    \"heatConsumption\": 8500\n  }\n}"}],"_postman_id":"07c522c7-87cf-4f25-b9f7-228614edbc25"},{"name":"Get energy dashboard","id":"9b81bdf7-860f-4473-8e2f-017a3c014a30","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/energy?locationId=1:WE-01&lang=en-US","description":"<p>Returns the energy dashboard data for a location.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.power</strong></td>\n<td>object</td>\n<td></td>\n<td>Power data with <code>sources</code> and <code>consumers</code> arrays.</td>\n</tr>\n<tr>\n<td><strong>result.heating</strong></td>\n<td>object</td>\n<td></td>\n<td>Heating data with <code>sources</code> and <code>consumers</code> arrays.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["dashboards","energy"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(required) Hierarchical location ID.</p>\n","type":"text/plain"},"key":"locationId","value":"1:WE-01"},{"description":{"content":"<p>(optional) Language code. Default: <code>en-US</code>.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Year filter.</p>\n","type":"text/plain"},"key":"year","value":""},{"disabled":true,"description":{"content":"<p>(optional) Month filter (0-11).</p>\n","type":"text/plain"},"key":"month","value":""},{"disabled":true,"description":{"content":"<p>(optional) Day filter.</p>\n","type":"text/plain"},"key":"day","value":""}],"variable":[]}},"response":[{"id":"4e64c9b0-ea2c-4e45-87da-6af5ff1f0e53","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/energy?locationId=1:WE-01&lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["dashboards","energy"],"query":[{"key":"locationId","value":"1:WE-01","description":"(required) Hierarchical location ID."},{"key":"lang","value":"en-US","description":"(optional) Language code. Default: `en-US`."},{"key":"year","value":"","description":"(optional) Year filter.","disabled":true},{"key":"month","value":"","description":"(optional) Month filter (0-11).","disabled":true},{"key":"day","value":"","description":"(optional) Day filter.","disabled":true}]},"description":"Returns the energy dashboard data for a location.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.power** | object | | Power data with `sources` and `consumers` arrays. |\n| **result.heating** | object | | Heating data with `sources` and `consumers` arrays. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"power\": {\n      \"sources\": [],\n      \"consumers\": []\n    },\n    \"heating\": {\n      \"sources\": [],\n      \"consumers\": []\n    }\n  }\n}"}],"_postman_id":"9b81bdf7-860f-4473-8e2f-017a3c014a30"},{"name":"Get main dashboard","id":"fad27cde-131b-44e8-8753-ed4093674de0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/main?lang=en-US","description":"<p>Returns the main dashboard overview.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.statistics</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of <code>{statisticName, statisticValue}</code> objects.</td>\n</tr>\n<tr>\n<td><strong>result.energyClasses</strong></td>\n<td>object</td>\n<td></td>\n<td>Energy class comparisons with <code>myBuildings</code>, <code>avgGermany</code>, <code>avgSensaru</code>.</td>\n</tr>\n<tr>\n<td><strong>result.consumptionData</strong></td>\n<td>object</td>\n<td></td>\n<td>Energy class, consumption per m², total consumption.</td>\n</tr>\n<tr>\n<td><strong>result.emissionData</strong></td>\n<td>object</td>\n<td></td>\n<td>CO₂ equivalent per m², total CO₂.</td>\n</tr>\n<tr>\n<td><strong>result.mapMarkerLocations</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of <code>[longitude, latitude, rating]</code> for map display.</td>\n</tr>\n<tr>\n<td><strong>result.savings</strong></td>\n<td>object</td>\n<td></td>\n<td>Potential and actual savings with amounts and percentages.</td>\n</tr>\n<tr>\n<td><strong>result.topObjects</strong></td>\n<td>array</td>\n<td></td>\n<td>Best-performing buildings.</td>\n</tr>\n<tr>\n<td><strong>result.worstObjects</strong></td>\n<td>array</td>\n<td></td>\n<td>Worst-performing buildings.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["dashboards","main"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code. Default: <code>en-US</code>.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Hierarchical location ID.</p>\n","type":"text/plain"},"key":"locationId","value":""}],"variable":[]}},"response":[{"id":"6ea6436a-a3be-4e97-a508-326592109a33","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/main?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["dashboards","main"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code. Default: `en-US`."},{"key":"locationId","value":"","description":"(optional) Hierarchical location ID.","disabled":true}]},"description":"Returns the main dashboard overview.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.statistics** | array | | Array of `{statisticName, statisticValue}` objects. |\n| **result.energyClasses** | object | | Energy class comparisons with `myBuildings`, `avgGermany`, `avgSensaru`. |\n| **result.consumptionData** | object | | Energy class, consumption per m², total consumption. |\n| **result.emissionData** | object | | CO₂ equivalent per m², total CO₂. |\n| **result.mapMarkerLocations** | array | | Array of `[longitude, latitude, rating]` for map display. |\n| **result.savings** | object | | Potential and actual savings with amounts and percentages. |\n| **result.topObjects** | array | | Best-performing buildings. |\n| **result.worstObjects** | array | | Worst-performing buildings. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"statistics\": [\n      {\n        \"statisticName\": \"administrationUnits\",\n        \"statisticValue\": 45\n      }\n    ],\n    \"energyClasses\": {},\n    \"consumptionData\": {},\n    \"emissionData\": {},\n    \"mapMarkerLocations\": [],\n    \"savings\": {},\n    \"topObjects\": [],\n    \"worstObjects\": []\n  }\n}"}],"_postman_id":"fad27cde-131b-44e8-8753-ed4093674de0"},{"name":"Get optimizer dashboard","id":"c27ca179-f74e-4923-ac4c-4a4d387519e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/optimizer?lang=en-US","description":"<p>Returns the optimizer dashboard data.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.temperatureAdjustmentCurve</strong></td>\n<td>array</td>\n<td><code>[[-20, 0.0], [-19, 1.2]]</code></td>\n<td>Aggregated static heating table as <code>[outsideTemp, offsetKelvin]</code> pairs.</td>\n</tr>\n<tr>\n<td><strong>result.temperatureAdjustmentCurves</strong></td>\n<td>object</td>\n<td></td>\n<td>Per heating circuit curves, keyed by circuit ID.</td>\n</tr>\n<tr>\n<td><strong>result.outdoorTemperatureRangeMin</strong></td>\n<td>number</td>\n<td><code>-5.3</code></td>\n<td>Minimum observed outdoor temperature.</td>\n</tr>\n<tr>\n<td><strong>result.outdoorTemperatureRangeMax</strong></td>\n<td>number</td>\n<td><code>8.2</code></td>\n<td>Maximum observed outdoor temperature.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["dashboards","optimizer"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code. Default: <code>en-US</code>.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Hierarchical location ID.</p>\n","type":"text/plain"},"key":"locationId","value":""},{"disabled":true,"description":{"content":"<p>(optional) Filter by heating system source location.</p>\n","type":"text/plain"},"key":"heatingSystemSourceLocationId","value":""}],"variable":[]}},"response":[{"id":"4f74547e-0c18-487e-af71-3d22b4ae7abf","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/dashboards/optimizer?lang=en-US","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["dashboards","optimizer"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code. Default: `en-US`."},{"key":"locationId","value":"","description":"(optional) Hierarchical location ID.","disabled":true},{"key":"heatingSystemSourceLocationId","value":"","description":"(optional) Filter by heating system source location.","disabled":true}]},"description":"Returns the optimizer dashboard data.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.temperatureAdjustmentCurve** | array | `[[-20, 0.0], [-19, 1.2]]` | Aggregated static heating table as `[outsideTemp, offsetKelvin]` pairs. |\n| **result.temperatureAdjustmentCurves** | object | | Per heating circuit curves, keyed by circuit ID. |\n| **result.outdoorTemperatureRangeMin** | number | `-5.3` | Minimum observed outdoor temperature. |\n| **result.outdoorTemperatureRangeMax** | number | `8.2` | Maximum observed outdoor temperature. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"temperatureAdjustmentCurve\": [\n      [\n        -20,\n        0.0\n      ],\n      [\n        -19,\n        1.2\n      ],\n      [\n        -18,\n        2.5\n      ]\n    ],\n    \"temperatureAdjustmentCurves\": {},\n    \"outdoorTemperatureRangeMin\": -5.3,\n    \"outdoorTemperatureRangeMax\": 8.2\n  }\n}"}],"_postman_id":"c27ca179-f74e-4923-ac4c-4a4d387519e4"}],"id":"9e8e5719-a890-4c0d-86a8-25294ea25c9d","_postman_id":"9e8e5719-a890-4c0d-86a8-25294ea25c9d","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"reference-data (public)","item":[{"name":"Get all roles","id":"2beee94b-c5e4-4d25-9542-775fb866829d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/roles","description":"<p>Returns all available device roles. No business partner context required.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an array of role objects.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>string</td>\n<td><code>\"20.10.14\"</code></td>\n<td>Dot-separated role ID.</td>\n</tr>\n<tr>\n<td><strong>numericId</strong></td>\n<td>integer</td>\n<td><code>201014</code></td>\n<td>Numeric role ID (used in query parameters).</td>\n</tr>\n<tr>\n<td><strong>name</strong></td>\n<td>string</td>\n<td><code>\"Supply Temperature\"</code></td>\n<td>Localized role name.</td>\n</tr>\n<tr>\n<td><strong>aggregation</strong></td>\n<td>string</td>\n<td><code>\"average\"</code></td>\n<td>(optional) Default aggregation method.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["roles"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Language code for localized role names.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Full-text search filter.</p>\n","type":"text/plain"},"key":"search","value":""}],"variable":[]}},"response":[{"id":"e9ec1fed-6477-4d38-98b4-2071c511ecc6","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/roles","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["roles"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code for localized role names.","disabled":true},{"key":"search","value":"","description":"(optional) Full-text search filter.","disabled":true}]},"description":"Returns all available device roles. No business partner context required.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an array of role objects.\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | string | `\"20.10.14\"` | Dot-separated role ID. |\n| **numericId** | integer | `201014` | Numeric role ID (used in query parameters). |\n| **name** | string | `\"Supply Temperature\"` | Localized role name. |\n| **aggregation** | string | `\"average\"` | (optional) Default aggregation method. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": [\n    {\n      \"id\": \"20.10.14\",\n      \"numericId\": 201014,\n      \"name\": \"Supply Temperature\",\n      \"aggregation\": \"average\"\n    },\n    {\n      \"id\": \"90.04.02\",\n      \"numericId\": 900402,\n      \"name\": \"Heat Meter - Heating\"\n    }\n  ]\n}"}],"_postman_id":"2beee94b-c5e4-4d25-9542-775fb866829d"},{"name":"Get all device types","id":"ae40f0e4-4cd2-404e-af18-7b198e5de230","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/device-types","description":"<p>Returns all device type descriptions (device description JSON). No business partner context required.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an object keyed by device type ID, each containing the device description JSON (configuration fields, data points, roles).</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["device-types"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[]}},"response":[{"id":"6e5f5b00-0bf5-47b8-be83-0b5f80c2a06c","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/device-types","description":"Returns all device type descriptions (device description JSON). No business partner context required.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an object keyed by device type ID, each containing the device description JSON (configuration fields, data points, roles)."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"s1-08-01\": {\n      \"name\": \"S1 Optimizer\",\n      \"fields\": [\n        \"...\"\n      ]\n    },\n    \"s1-04-01\": {\n      \"name\": \"S1 DualTemp\",\n      \"fields\": [\n        \"...\"\n      ]\n    }\n  }\n}"}],"_postman_id":"ae40f0e4-4cd2-404e-af18-7b198e5de230"},{"name":"Get device type","id":"29dfc6d6-2cea-461d-b156-458930f00f76","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/device-types/:typeId","description":"<p>Returns the device description JSON for a specific device type. No business partner context required.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is the device description JSON for the requested type, containing configuration fields, data point definitions, and roles.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["device-types",":typeId"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"54471232-2485-493f-a393-0af5782769c9","description":{"content":"<p>(required) Device type ID, e.g. <code>s1-08-01</code>.</p>\n","type":"text/plain"},"type":"any","value":"s1-08-01","key":"typeId"}]}},"response":[{"id":"ed124eb7-9c2a-4792-b6bd-d4e964e9615f","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/device-types/:typeId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["device-types",":typeId"],"variable":[{"id":"54471232-2485-493f-a393-0af5782769c9","key":"typeId","value":"s1-08-01","description":"(required) Device type ID, e.g. `s1-08-01`."}]},"description":"Returns the device description JSON for a specific device type. No business partner context required.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is the device description JSON for the requested type, containing configuration fields, data point definitions, and roles."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"name\": \"S1 Optimizer\",\n    \"fields\": [\n      \"...\"\n    ],\n    \"dataPoints\": {}\n  }\n}"},{"id":"394199cf-4fa7-4e04-93ef-f4e08983036e","name":"Not found","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/device-types/:typeId","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["device-types",":typeId"],"variable":[{"id":"54471232-2485-493f-a393-0af5782769c9","key":"typeId","value":"s1-08-01","description":"(required) Device type ID, e.g. `s1-08-01`."}]},"description":"Returns the device description JSON for a specific device type. No business partner context required.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is the device description JSON for the requested type, containing configuration fields, data point definitions, and roles."},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": \"not_found\",\n  \"description\": \"The requested resource was not found.\"\n}"}],"_postman_id":"29dfc6d6-2cea-461d-b156-458930f00f76"}],"id":"540b6252-7922-4b08-993c-332b40e71847","_postman_id":"540b6252-7922-4b08-993c-332b40e71847","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"system-provider (bp=0)","item":[{"name":"gateways","item":[{"name":"{serialNumber}","item":[{"name":"Update firmware","id":"4ae3c2cb-a421-4d7f-94c7-b109343447ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"cancel\": false,\n  \"revision\": -1\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways/:serialNumber/update-firmware","description":"<p>Triggers a firmware update for a gateway. Set <code>cancel: true</code> to cancel a pending update. <strong>System provider only (bp=0).</strong></p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>cancel</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td><code>false</code></td>\n<td>(optional) Set to <code>true</code> to cancel a pending firmware update.</td>\n</tr>\n<tr>\n<td><strong>revision</strong></td>\n<td>integer</td>\n<td><code>42</code></td>\n<td><code>-1</code></td>\n<td>(optional) Target firmware revision. <code>-1</code> for latest available.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["gateways",":serialNumber","update-firmware"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"919710f1-183a-4fb4-bf22-5ab56dc8521a","description":{"content":"<p>(required) Gateway serial number.</p>\n","type":"text/plain"},"type":"any","value":"G100AABBCCDD","key":"serialNumber"}]}},"response":[{"id":"3add21d6-dcc1-4fab-8f5b-be89a62b3108","name":"Success","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"cancel\": false,\n  \"revision\": -1\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways/:serialNumber/update-firmware","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["gateways",":serialNumber","update-firmware"],"variable":[{"id":"919710f1-183a-4fb4-bf22-5ab56dc8521a","key":"serialNumber","value":"G100AABBCCDD","description":"(required) Gateway serial number."}]},"description":"Triggers a firmware update for a gateway. Set `cancel: true` to cancel a pending update. **System provider only (bp=0).**\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **cancel** | boolean | `true` | `false` | (optional) Set to `true` to cancel a pending firmware update. |\n| **revision** | integer | `42` | `-1` | (optional) Target firmware revision. `-1` for latest available. |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"4ae3c2cb-a421-4d7f-94c7-b109343447ea"},{"name":"Set fast mode","id":"97871fdd-c6b5-44be-9912-5a8b3b217a9d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"enabled\": true\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways/:serialNumber/fast-mode","description":"<p>Enables or disables fast mode (shorter reporting interval) for a gateway. <strong>System provider only (bp=0).</strong></p>\n<h4 id=\"request-body-json\">Request body JSON</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Default</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>enabled</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td><code>true</code></td>\n<td>(optional) Set to <code>false</code> to disable fast mode. Default: <code>true</code> (enable).</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["gateways",":serialNumber","fast-mode"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"262be96a-4e00-43ab-99e0-11a1d52d70f9","description":{"content":"<p>(required) Gateway serial number.</p>\n","type":"text/plain"},"type":"any","value":"G100AABBCCDD","key":"serialNumber"}]}},"response":[{"id":"b9e6c1c4-b419-42ff-ac1e-067ec87e28a6","name":"Success","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"enabled\": true\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways/:serialNumber/fast-mode","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["gateways",":serialNumber","fast-mode"],"variable":[{"id":"262be96a-4e00-43ab-99e0-11a1d52d70f9","key":"serialNumber","value":"G100AABBCCDD","description":"(required) Gateway serial number."}]},"description":"Enables or disables fast mode (shorter reporting interval) for a gateway. **System provider only (bp=0).**\n\n#### Request body JSON\n\n| **Property** | **Type** | **Example value** | **Default** | **Description** |\n| --- | --- | --- | --- | --- |\n| **enabled** | boolean | `false` | `true` | (optional) Set to `false` to disable fast mode. Default: `true` (enable). |\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"97871fdd-c6b5-44be-9912-5a8b3b217a9d"},{"name":"Factory reset","id":"cafed62b-db62-41c6-95c7-50598577ee76","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways/:serialNumber/factory-reset","description":"<p>Triggers a factory reset for a gateway. <strong>System provider only (bp=0).</strong></p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an empty object <code>{}</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["gateways",":serialNumber","factory-reset"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[{"id":"024f952c-e541-41b6-a3d6-404cccc5534e","description":{"content":"<p>(required) Gateway serial number.</p>\n","type":"text/plain"},"type":"any","value":"G100AABBCCDD","key":"serialNumber"}]}},"response":[{"id":"ffb5814d-0ca6-43c8-a0d4-78512ecefd66","name":"Success","originalRequest":{"method":"POST","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways/:serialNumber/factory-reset","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["gateways",":serialNumber","factory-reset"],"variable":[{"id":"024f952c-e541-41b6-a3d6-404cccc5534e","key":"serialNumber","value":"G100AABBCCDD","description":"(required) Gateway serial number."}]},"description":"Triggers a factory reset for a gateway. **System provider only (bp=0).**\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an empty object `{}`."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {}\n}"}],"_postman_id":"cafed62b-db62-41c6-95c7-50598577ee76"}],"id":"324e3e8a-6bf7-45dd-8bbe-6bcdd2fbd6e2","_postman_id":"324e3e8a-6bf7-45dd-8bbe-6bcdd2fbd6e2","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get gateways","id":"54d593ec-f98c-4c43-8c97-d400ce8efd38","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways?filter=all&limit=50","description":"<p>Returns a list of gateways with filtering. <strong>System provider only (bp=0).</strong></p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.gateways</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of gateway objects.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"gateway-object\">Gateway object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>id</strong></td>\n<td>UUID</td>\n<td><code>\"gw-uuid\"</code></td>\n<td>Gateway UUID.</td>\n</tr>\n<tr>\n<td><strong>serialNumber</strong></td>\n<td>string</td>\n<td><code>\"G100AABBCCDD\"</code></td>\n<td>Gateway serial number.</td>\n</tr>\n<tr>\n<td><strong>businessPartnerId</strong></td>\n<td>UUID</td>\n<td><code>\"bp-uuid\"</code></td>\n<td>Assigned business partner (empty if unassigned).</td>\n</tr>\n<tr>\n<td><strong>assigned</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether gateway is assigned to a BP.</td>\n</tr>\n<tr>\n<td><strong>status</strong></td>\n<td>string</td>\n<td><code>\"active\"</code></td>\n<td><code>\"inbox\"</code>, <code>\"active\"</code>, or <code>\"inactive\"</code> (inactive = no packet for &gt;130 min).</td>\n</tr>\n<tr>\n<td><strong>lastUpdate</strong></td>\n<td>integer</td>\n<td><code>1700000000</code></td>\n<td>Unix epoch seconds of last proxy update.</td>\n</tr>\n<tr>\n<td><strong>firmwareRevision</strong></td>\n<td>integer</td>\n<td><code>12345</code></td>\n<td>Current firmware revision number.</td>\n</tr>\n<tr>\n<td><strong>firmwareVersion</strong></td>\n<td>string</td>\n<td><code>\"2.3.4\"</code></td>\n<td>Firmware version string.</td>\n</tr>\n<tr>\n<td><strong>systemControllerRevision</strong></td>\n<td>integer</td>\n<td><code>5678</code></td>\n<td>System controller revision.</td>\n</tr>\n<tr>\n<td><strong>updating</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether firmware update is in progress.</td>\n</tr>\n<tr>\n<td><strong>updateProgress</strong></td>\n<td>integer</td>\n<td><code>0</code></td>\n<td>Update progress percentage (0-100).</td>\n</tr>\n<tr>\n<td><strong>blockUpdate</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether updates are blocked.</td>\n</tr>\n<tr>\n<td><strong>targetRevision</strong></td>\n<td>integer</td>\n<td><code>0</code></td>\n<td>Target firmware revision for pending update.</td>\n</tr>\n<tr>\n<td><strong>fastCycle</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether fast mode is configured.</td>\n</tr>\n<tr>\n<td><strong>fastCycleActive</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether fast mode is currently active.</td>\n</tr>\n<tr>\n<td><strong>nextResponseTime</strong></td>\n<td>integer</td>\n<td><code>0</code></td>\n<td>Unix epoch seconds of expected next response.</td>\n</tr>\n<tr>\n<td><strong>factoryReset</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Whether factory reset is pending.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<p><strong>Tip:</strong> Use the <code>businessPartnerId</code> from the response to query BP-specific endpoints like <code>devices/health-check</code>. See the workflow section in <code>Get health check</code> for a step-by-step guide.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["gateways"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Search by serial number or name.</p>\n","type":"text/plain"},"key":"search","value":""},{"disabled":true,"description":{"content":"<p>(optional) Comma-separated business partner IDs.</p>\n","type":"text/plain"},"key":"bp_ids","value":""},{"description":{"content":"<p>(optional) <code>all</code> (default), <code>inbox</code>, <code>active</code>, <code>inactive</code>, <code>updateAvailable</code>.</p>\n","type":"text/plain"},"key":"filter","value":"all"},{"disabled":true,"description":{"content":"<p>(optional) Numeric offset. Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"offset","value":"0"},{"description":{"content":"<p>(optional) Page size (1–1000). Default: <code>50</code>.</p>\n","type":"text/plain"},"key":"limit","value":"50"}],"variable":[]}},"response":[{"id":"157415e8-7414-4f9e-b9a8-1f9e79f96762","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways?filter=all&limit=50","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["gateways"],"query":[{"key":"search","value":"","description":"(optional) Search by serial number or name.","disabled":true},{"key":"bp_ids","value":"","description":"(optional) Comma-separated business partner IDs.","disabled":true},{"key":"filter","value":"all","description":"(optional) `all` (default), `inbox`, `active`, `inactive`, `updateAvailable`."},{"key":"offset","value":"0","description":"(optional) Numeric offset. Default: `0`.","disabled":true},{"key":"limit","value":"50","description":"(optional) Page size (1–1000). Default: `50`."}]},"description":"Returns a list of gateways with filtering. **System provider only (bp=0).**\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.gateways** | array | | Array of gateway objects. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |\n\n##### Gateway object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **id** | UUID | `\"gw-uuid\"` | Gateway UUID. |\n| **serialNumber** | string | `\"G100AABBCCDD\"` | Gateway serial number. |\n| **businessPartnerId** | UUID | `\"bp-uuid\"` | Assigned business partner (empty if unassigned). |\n| **assigned** | boolean | `true` | Whether gateway is assigned to a BP. |\n| **status** | string | `\"active\"` | `\"inbox\"`, `\"active\"`, or `\"inactive\"` (inactive = no packet for >130 min). |\n| **lastUpdate** | integer | `1700000000` | Unix epoch seconds of last proxy update. |\n| **firmwareRevision** | integer | `12345` | Current firmware revision number. |\n| **firmwareVersion** | string | `\"2.3.4\"` | Firmware version string. |\n| **systemControllerRevision** | integer | `5678` | System controller revision. |\n| **updating** | boolean | `false` | Whether firmware update is in progress. |\n| **updateProgress** | integer | `0` | Update progress percentage (0-100). |\n| **blockUpdate** | boolean | `true` | Whether updates are blocked. |\n| **targetRevision** | integer | `0` | Target firmware revision for pending update. |\n| **fastCycle** | boolean | `false` | Whether fast mode is configured. |\n| **fastCycleActive** | boolean | `false` | Whether fast mode is currently active. |\n| **nextResponseTime** | integer | `0` | Unix epoch seconds of expected next response. |\n| **factoryReset** | boolean | `false` | Whether factory reset is pending. |\n\n---\n\n**Tip:** Use the `businessPartnerId` from the response to query BP-specific endpoints like `devices/health-check`. See the workflow section in `Get health check` for a step-by-step guide."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"gateways\": [\n      {\n        \"id\": \"gw-uuid\",\n        \"serialNumber\": \"G100AABBCCDD\",\n        \"businessPartnerId\": \"bp-uuid\",\n        \"assigned\": true,\n        \"status\": \"active\",\n        \"lastUpdate\": 1700000000,\n        \"firmwareRevision\": 12345,\n        \"firmwareVersion\": \"2.3.4\",\n        \"systemControllerRevision\": 5678,\n        \"updating\": false,\n        \"updateProgress\": 0,\n        \"blockUpdate\": true,\n        \"targetRevision\": 0,\n        \"fastCycle\": false,\n        \"fastCycleActive\": false,\n        \"nextResponseTime\": 0,\n        \"factoryReset\": false\n      }\n    ],\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"}],"_postman_id":"54d593ec-f98c-4c43-8c97-d400ce8efd38"},{"name":"Get available firmwares","id":"4b3aeed0-92ad-4f1c-bbbc-35a331164a6c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways/available-firmwares","description":"<p>Returns available firmware versions for gateways. <strong>System provider only (bp=0).</strong></p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>The result is an array of available firmware revision numbers (integers).</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["gateways","available-firmwares"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[]}},"response":[{"id":"f32eb2e9-ad6d-407b-8148-347206289702","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateways/available-firmwares","description":"Returns available firmware versions for gateways. **System provider only (bp=0).**\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\nThe result is an array of available firmware revision numbers (integers)."},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": [\n    12345,\n    12346,\n    12400\n  ]\n}"}],"_postman_id":"4b3aeed0-92ad-4f1c-bbbc-35a331164a6c"}],"id":"88383b1c-d8cd-46ba-b8be-04e02182150e","_postman_id":"88383b1c-d8cd-46ba-b8be-04e02182150e","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get offline devices","id":"d661e16e-cc5f-4fe4-a31d-e6c6ec6a7450","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/offline-devices?lang=en-US&limit=10000","description":"<p>Returns offline Sensaru gateways and sensors. <strong>System provider only (bp=0).</strong></p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.devices</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of offline device objects (same structure as device object).</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["offline-devices"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"description":{"content":"<p>(optional) Language code.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"},{"disabled":true,"description":{"content":"<p>(optional) Sort field. Default: <code>id</code>.</p>\n","type":"text/plain"},"key":"orderBy","value":"id"},{"disabled":true,"description":{"content":"<p>(optional) Sort direction. Default: <code>true</code>.</p>\n","type":"text/plain"},"key":"ascending","value":"true"},{"disabled":true,"description":{"content":"<p>(optional) Pagination cursor.</p>\n","type":"text/plain"},"key":"offset","value":""},{"description":{"content":"<p>(optional) Page size (1–10000). Default: <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"10000"}],"variable":[]}},"response":[{"id":"4022173c-71db-4fd4-931f-090679a2c4a0","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/offline-devices?lang=en-US&limit=10000","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["offline-devices"],"query":[{"key":"lang","value":"en-US","description":"(optional) Language code."},{"key":"orderBy","value":"id","description":"(optional) Sort field. Default: `id`.","disabled":true},{"key":"ascending","value":"true","description":"(optional) Sort direction. Default: `true`.","disabled":true},{"key":"offset","value":"","description":"(optional) Pagination cursor.","disabled":true},{"key":"limit","value":"10000","description":"(optional) Page size (1–10000). Default: `100`."}]},"description":"Returns offline Sensaru gateways and sensors. **System provider only (bp=0).**\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.devices** | array | | Array of offline device objects (same structure as device object). |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"devices\": [\n      {\n        \"id\": \"dev-uuid\",\n        \"serialNumber\": \"G100AABB\",\n        \"type\": \"G1\",\n        \"status\": \"offline\",\n        \"lastPacket\": 1699000000\n      }\n    ],\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"}],"_postman_id":"d661e16e-cc5f-4fe4-a31d-e6c6ec6a7450"},{"name":"Get gateway statistics","id":"979edeb3-fa07-453f-9c8f-53f51746079e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/gateway-statistics","description":"<p>Returns gateway statistics. <strong>System provider only (bp=0).</strong> (Stub — not yet implemented.)</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<p>(Stub endpoint — not yet implemented.)</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["gateway-statistics"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[],"variable":[]}},"response":[],"_postman_id":"979edeb3-fa07-453f-9c8f-53f51746079e"},{"name":"Get device inbox","id":"6a16b454-12b7-4c28-a1d6-14bbcf26ac19","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/device-inbox?limit=50","description":"<p>Returns device inbox entries (unassigned devices). <strong>System provider only (bp=0).</strong></p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.devices</strong></td>\n<td>array</td>\n<td></td>\n<td>Array of unassigned device entries with <code>id</code> and <code>serialNumber</code>.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata</strong></td>\n<td>object</td>\n<td></td>\n<td>Pagination metadata.</td>\n</tr>\n<tr>\n<td><strong>result.responseMetadata.nextKey</strong></td>\n<td>string</td>\n<td><code>\"cursor-value\"</code></td>\n<td>Pass to <code>offset</code> query parameter for next page. Empty string when no more data.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["device-inbox"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Full-text search.</p>\n","type":"text/plain"},"key":"search","value":""},{"disabled":true,"description":{"content":"<p>(optional) Numeric offset. Default: <code>0</code>.</p>\n","type":"text/plain"},"key":"offset","value":"0"},{"description":{"content":"<p>(optional) Page size (1–1000). Default: <code>50</code>.</p>\n","type":"text/plain"},"key":"limit","value":"50"}],"variable":[]}},"response":[{"id":"496fa60b-6178-4075-a2c1-29c6bb095605","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/device-inbox?limit=50","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["device-inbox"],"query":[{"key":"search","value":"","description":"(optional) Full-text search.","disabled":true},{"key":"offset","value":"0","description":"(optional) Numeric offset. Default: `0`.","disabled":true},{"key":"limit","value":"50","description":"(optional) Page size (1–1000). Default: `50`."}]},"description":"Returns device inbox entries (unassigned devices). **System provider only (bp=0).**\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.devices** | array | | Array of unassigned device entries with `id` and `serialNumber`. |\n| **result.responseMetadata** | object | | Pagination metadata. |\n| **result.responseMetadata.nextKey** | string | `\"cursor-value\"` | Pass to `offset` query parameter for next page. Empty string when no more data. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"devices\": [\n      {\n        \"id\": \"dev-uuid\",\n        \"serialNumber\": \"G1FF789012\"\n      }\n    ],\n    \"responseMetadata\": {\n      \"nextKey\": \"\"\n    }\n  }\n}"}],"_postman_id":"6a16b454-12b7-4c28-a1d6-14bbcf26ac19"}],"id":"2751fe88-d2fa-469b-9a13-95aa708ffd08","_postman_id":"2751fe88-d2fa-469b-9a13-95aa708ffd08","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get optimizer status","id":"862a3c14-7de2-4ba2-a65a-7a28d066b5d8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/optimizer-status","description":"<p>Returns optimizer status overview for the business partner.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.locationId</strong></td>\n<td>string</td>\n<td><code>\"1:WE-01\"</code></td>\n<td>(single location mode) Location ID.</td>\n</tr>\n<tr>\n<td><strong>result.ready</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Whether optimizers are fully configured and operational.</td>\n</tr>\n<tr>\n<td><strong>result.optimizerDevices</strong></td>\n<td>object</td>\n<td></td>\n<td>Optimizer device status: <code>found</code>, <code>count</code>, <code>allConfigured</code>, <code>unconfiguredDevices</code>.</td>\n</tr>\n<tr>\n<td><strong>result.propertyData</strong></td>\n<td>object</td>\n<td></td>\n<td>Property data completeness: <code>complete</code>, <code>incompleteProperties</code>.</td>\n</tr>\n<tr>\n<td><strong>result.consumptionSettings</strong></td>\n<td>array</td>\n<td></td>\n<td>PYC settings per heating system config.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["optimizer-status"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Filter by location ID (asset ID or UUID).</p>\n","type":"text/plain"},"key":"locationId","value":""}],"variable":[]}},"response":[{"id":"36a4d53e-cd64-4ab5-b0a9-7a8d7ffa03de","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/optimizer-status","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["optimizer-status"],"query":[{"key":"locationId","value":"","description":"(optional) Filter by location ID (asset ID or UUID).","disabled":true}]},"description":"Returns optimizer status overview for the business partner.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.locationId** | string | `\"1:WE-01\"` | (single location mode) Location ID. |\n| **result.ready** | boolean | `true` | Whether optimizers are fully configured and operational. |\n| **result.optimizerDevices** | object | | Optimizer device status: `found`, `count`, `allConfigured`, `unconfiguredDevices`. |\n| **result.propertyData** | object | | Property data completeness: `complete`, `incompleteProperties`. |\n| **result.consumptionSettings** | array | | PYC settings per heating system config. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"locationId\": \"1:WE-01\",\n    \"ready\": true,\n    \"optimizerDevices\": {\n      \"found\": true,\n      \"count\": 1,\n      \"allConfigured\": true,\n      \"unconfiguredDevices\": []\n    },\n    \"propertyData\": {\n      \"complete\": true,\n      \"incompleteProperties\": []\n    },\n    \"consumptionSettings\": [\n      {\n        \"assetId\": \"asset-uuid\",\n        \"previousYearConsumption\": 15000,\n        \"set\": true\n      }\n    ]\n  }\n}"}],"_postman_id":"862a3c14-7de2-4ba2-a65a-7a28d066b5d8"},{"name":"Get reception status","id":"0538f231-181f-405b-aef5-3455d33fde91","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"<p>Only required when logged in as a system provider or system distributor. Sets the business partner context.</p>\n","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-device-management/reception-status","description":"<p>Returns reception/signal quality status for devices.</p>\n<h4 id=\"response-json\">Response JSON</h4>\n<h5 id=\"success-response\">Success response</h5>\n<p><strong>Code:</strong> 200</p>\n<p>All successful responses are wrapped in:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>true</code></td>\n<td>Always <code>true</code> for the success response.</td>\n</tr>\n<tr>\n<td><strong>result</strong></td>\n<td>object</td>\n<td></td>\n<td>The endpoint-specific result object. See below.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"error-response\">Error response</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>success</strong></td>\n<td>boolean</td>\n<td><code>false</code></td>\n<td>Always <code>false</code> for the error response.</td>\n</tr>\n<tr>\n<td><strong>error</strong></td>\n<td>string</td>\n<td><code>\"request_error\"</code></td>\n<td>Machine-readable error code.</td>\n</tr>\n<tr>\n<td><strong>description</strong></td>\n<td>string</td>\n<td><code>\"No business partner specified.\"</code></td>\n<td>Human-readable error description.</td>\n</tr>\n</tbody>\n</table>\n</div><h5 id=\"result-object\">result object</h5>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Property</strong></th>\n<th><strong>Type</strong></th>\n<th><strong>Example value</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>result.totalDevices</strong></td>\n<td>integer</td>\n<td><code>180</code></td>\n<td>Total devices checked.</td>\n</tr>\n<tr>\n<td><strong>result.issueCount</strong></td>\n<td>integer</td>\n<td><code>8</code></td>\n<td>Total devices with reception issues.</td>\n</tr>\n<tr>\n<td><strong>result.sensors</strong></td>\n<td>object</td>\n<td></td>\n<td>Sensor signal issues: <code>total</code>, <code>issues</code> array.</td>\n</tr>\n<tr>\n<td><strong>result.gateways</strong></td>\n<td>object</td>\n<td></td>\n<td>Gateway connectivity issues: <code>total</code>, <code>issues</code> array with <code>rsrp</code>, <code>rsrq</code>, <code>coverageEnhancementAverage</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["reception-status"],"host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"query":[{"disabled":true,"description":{"content":"<p>(optional) Hierarchical location ID.</p>\n","type":"text/plain"},"key":"locationId","value":""}],"variable":[]}},"response":[{"id":"90b7b030-f132-432d-9a41-f5a37ff7b604","name":"Success","originalRequest":{"method":"GET","header":[{"key":"PRIVATE-TOKEN","value":"","description":"API key for authentication.","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","description":"Only required when logged in as a system provider or system distributor. Sets the business partner context.","type":"text"}],"url":{"raw":"https://core.sensaru.net/api/v1/modules/c1-device-management/reception-status","host":["https://core.sensaru.net/api/v1/modules/c1-device-management"],"path":["reception-status"],"query":[{"key":"locationId","value":"","description":"(optional) Hierarchical location ID.","disabled":true}]},"description":"Returns reception/signal quality status for devices.\n\n#### Response JSON\n\n##### Success response\n\n**Code:** 200\n\nAll successful responses are wrapped in:\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `true` | Always `true` for the success response. |\n| **result** | object | | The endpoint-specific result object. See below. |\n\n##### Error response\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **success** | boolean | `false` | Always `false` for the error response. |\n| **error** | string | `\"request_error\"` | Machine-readable error code. |\n| **description** | string | `\"No business partner specified.\"` | Human-readable error description. |\n\n##### result object\n\n| **Property** | **Type** | **Example value** | **Description** |\n| --- | --- | --- | --- |\n| **result.totalDevices** | integer | `180` | Total devices checked. |\n| **result.issueCount** | integer | `8` | Total devices with reception issues. |\n| **result.sensors** | object | | Sensor signal issues: `total`, `issues` array. |\n| **result.gateways** | object | | Gateway connectivity issues: `total`, `issues` array with `rsrp`, `rsrq`, `coverageEnhancementAverage`. |"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"result\": {\n    \"totalDevices\": 180,\n    \"issueCount\": 2,\n    \"sensors\": {\n      \"total\": 150,\n      \"issues\": [\n        {\n          \"deviceId\": \"dev-uuid\",\n          \"serialNumber\": \"S104AABB\",\n          \"rssi\": -92,\n          \"problems\": [\n            \"lowRssi\"\n          ]\n        }\n      ]\n    },\n    \"gateways\": {\n      \"total\": 30,\n      \"issues\": []\n    }\n  }\n}"}],"_postman_id":"0538f231-181f-405b-aef5-3455d33fde91"}],"id":"80f6394d-1a0b-4f49-8f7e-8184407321cf","_postman_id":"80f6394d-1a0b-4f49-8f7e-8184407321cf","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"c1-reporting","item":[{"name":"esg/meters","item":[{"name":"{meterId}","item":[{"name":"data-points","item":[{"name":"{dataPointId}","item":[{"name":"Get data point","id":"18e215df-1a67-4615-9c3e-975693b8dd05","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-reporting/esg/meters/:meterId/data-points/:dataPointId","description":"<p>Returns information about a single data point of a meter.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["esg","meters",":meterId","data-points",":dataPointId"],"host":["https://core.sensaru.net/api/v1/modules/c1-reporting"],"query":[],"variable":[{"id":"a1f25dd8-5941-4998-9248-a2038ff65feb","description":{"content":"<p>(Required) The ID of the meter as returned by <code>/esg/meters</code>.</p>\n","type":"text/plain"},"type":"any","value":"fe8367c6-0923-4a2e-8cba-ceab583b089a","key":"meterId"},{"id":"83fea163-bbf1-4a88-bc0e-39b33a0723a6","description":{"content":"<p>(Required) The ID of the data point as returned by <code>/esg/meters/{meterId}/data-points</code>. Currently can be <code>meter-reading</code> or <code>consumption</code>.</p>\n","type":"text/plain"},"type":"any","value":"meter-reading","key":"dataPointId"}]}},"response":[{"id":"8dde77a2-0008-4427-96bb-92e27668c9c3","name":"Success response","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/esg/meters/:meterId/data-points/:dataPointId","host":["{{baseUrl}}"],"path":["esg","meters",":meterId","data-points",":dataPointId"],"variable":[{"key":"meterId","value":"tempor adipisicing","description":"(Required) The ID of the meter as returned by `/esg/meters`."},{"key":"dataPointId","value":"-2048178","description":"(Required) The ID of the data point as returned by `/esg/meters/{meterId}/data-points`. Currently can be `meter-reading` or `consumption`."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"meter-reading\",\n  \"value\": 5917030.738307178,\n  \"updatedAt\": 1631388075,\n  \"unit\": \"l\"\n}"}],"_postman_id":"18e215df-1a67-4615-9c3e-975693b8dd05"},{"name":"Get log","id":"93faab53-c8ff-4638-9531-d996599c4a2c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-reporting/esg/meters/:meterId/data-points/:dataPointId/log","description":"<p>Returns the logged data for the specified data point within the specified date range. Data can be returned aggregated.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["esg","meters",":meterId","data-points",":dataPointId","log"],"host":["https://core.sensaru.net/api/v1/modules/c1-reporting"],"query":[{"disabled":true,"description":{"content":"<p>Returns data for the specified 4-digit year range (e. g. <code>2020-2025</code>, inclusive) or 4-digit year (e. g. <code>2025</code>). Cannot be used together with <code>dateFrom</code> and <code>dateTo</code>.</p>\n","type":"text/plain"},"key":"years","value":"2023"},{"disabled":true,"description":{"content":"<p>Returns data for the specified month (<code>1</code> to <code>12</code>) or months (e. g. <code>10-12</code>, inclusive). Requires <code>years</code> to be set to a single year. Cannot be used together with <code>dateFrom</code> and <code>dateTo</code>.</p>\n","type":"text/plain"},"key":"months","value":"1"},{"disabled":true,"description":{"content":"<p>Returns data for the specified day (<code>1 to 31</code>) or days (e. g. <code>12-21</code>, inclusive). Requires <code>years</code> and <code>months</code> to be single values. Cannot be used together with <code>dateFrom</code> and <code>dateTo</code>.</p>\n","type":"text/plain"},"key":"days","value":"12"},{"disabled":true,"description":{"content":"<p>Returns data for the specified hour of the day (<code>0</code> to <code>23</code>) or hours (e. g. <code>6-18</code>, inclusive). Requires <code>years</code>, <code>months</code> and <code>days</code> to be set to be single values. Cannot be used together with <code>dateFrom</code> and <code>dateTo</code>.</p>\n","type":"text/plain"},"key":"hours","value":"13"},{"disabled":true,"description":{"content":"<p>Start date as a Unix timestamp (in seconds, local time). Cannot be used together with <code>years</code>, <code>months</code>, <code>days</code> or <code>hours</code>. For example September 10, 2022 11 pm has the timestamp <code>1662850800</code>. This is regardless of the time zone. So 11 pm with GMT+2 or GMT+10 both have the same value.</p>\n","type":"text/plain"},"key":"dateFrom","value":"1662850800"},{"disabled":true,"description":{"content":"<p>End date as a Unix timestamp (in seconds, local time). Cannot be used together with <code>years</code>, <code>months</code>, <code>days</code> or <code>hours</code>.</p>\n","type":"text/plain"},"key":"dateTo","value":"1662850800"},{"disabled":true,"description":{"content":"<p>Possible values:</p>\n<ul>\n<li><code>none</code></li>\n<li><code>15m</code></li>\n<li><code>hour</code></li>\n<li><code>day</code></li>\n<li><code>all</code></li>\n</ul>\n<p>Aggregate the data. <code>none</code> returns the data in the highest resolution stored. <code>all</code> aggregates all values in the time frame, i. e. only one value is returned.</p>\n","type":"text/plain"},"key":"aggregate","value":"hour"},{"disabled":true,"description":{"content":"<p>Specify <code>nextKey</code> from the last result to get the next page.</p>\n","type":"text/plain"},"key":"offset","value":"0"},{"disabled":true,"description":{"content":"<p>The number of log entries to return. The maximum value is <code>1000</code>. Defaults to <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"1000"}],"variable":[{"id":"e19c9964-16f8-4b42-8e82-50e4b29d2e20","description":{"content":"<p>(Required) Meter ID</p>\n","type":"text/plain"},"type":"any","value":"fe8367c6-0923-4a2e-8cba-ceab583b089a","key":"meterId"},{"id":"a0b0737b-95e0-45cb-808a-5c8696fa0c81","description":{"content":"<p>(Required) The ID of the data point as returned by <code>/esg/meters/{meterId}/data-points</code>.</p>\n","type":"text/plain"},"type":"any","value":"consumption","key":"dataPointId"}]}},"response":[{"id":"20a3dfd8-cf9f-4322-a3a5-68160127a016","name":"Success response","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/esg/meters/:meterId/data-points/:dataPointId/log?years=-2048178&months=-2048178&days=-2048178&hours=-2048178&dateFrom=-2048178&dateTo=-2048178&aggregate=hour&offset=-2048178&limit=-2048178","host":["{{baseUrl}}"],"path":["esg","meters",":meterId","data-points",":dataPointId","log"],"query":[{"key":"years","value":"-2048178"},{"key":"months","value":"-2048178"},{"key":"days","value":"-2048178"},{"key":"hours","value":"-2048178"},{"key":"dateFrom","value":"-2048178"},{"key":"dateTo","value":"-2048178"},{"key":"aggregate","value":"hour"},{"key":"offset","value":"-2048178"},{"key":"limit","value":"-2048178"}],"variable":[{"key":"meterId","value":"tempor adipisicing","description":"(Required) Meter ID"},{"key":"dataPointId","value":"tempor adipisicing","description":"(Required) The ID of the data point as returned by `/esg/meters/{meterId}/data-points`."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"log\": [\n    [\n      1631389792,\n      74828\n    ],\n    [\n      1631389792,\n      74828\n    ]\n  ],\n  \"responseMetadata\": {\n    \"nextKey\": \"mollit exercitation occaecat in E\"\n  }\n}"}],"_postman_id":"93faab53-c8ff-4638-9531-d996599c4a2c"}],"id":"461ea4b0-96c8-465f-a65a-a64d46499cca","_postman_id":"461ea4b0-96c8-465f-a65a-a64d46499cca","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get data points","id":"b70143b2-d603-44eb-ba2f-3da389f51d40","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-reporting/esg/meters/:meterId/data-points","description":"<p>Returns a list of all data points of a meter. Every meter currently has two data points: <code>meter-reading</code> and <code>consumption</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["esg","meters",":meterId","data-points"],"host":["https://core.sensaru.net/api/v1/modules/c1-reporting"],"query":[],"variable":[{"id":"83bc6086-2b31-4d93-8cf5-4acd46b08da9","description":{"content":"<p>(Required) The ID of the meter as returned by <code>/esg/meters</code>.</p>\n","type":"text/plain"},"type":"any","value":"fe8367c6-0923-4a2e-8cba-ceab583b089a","key":"meterId"}]}},"response":[{"id":"3cf99dc1-c3ce-46d1-b61f-0162fc736a26","name":"Success response","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/esg/meters/:meterId/data-points","host":["{{baseUrl}}"],"path":["esg","meters",":meterId","data-points"],"variable":[{"key":"meterId","value":"tempor adipisicing","description":"(Required) The ID of the meter as returned by `/esg/meters`."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"[\n  {\n    \"id\": \"meter-reading\",\n    \"value\": -61456852.81375943,\n    \"updatedAt\": 1631388075,\n    \"unit\": \"l\"\n  },\n  {\n    \"id\": \"meter-reading\",\n    \"value\": 39697991.07832408,\n    \"updatedAt\": 1631388075,\n    \"unit\": \"l\"\n  }\n]"}],"_postman_id":"b70143b2-d603-44eb-ba2f-3da389f51d40"}],"id":"b7beedb5-010f-45a5-83ec-f639ea8223a6","_postman_id":"b7beedb5-010f-45a5-83ec-f639ea8223a6","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get meter","id":"f63ab401-7008-40d5-a5f5-b39e7a5aa44b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-reporting/esg/meters/:meterId?lang=en","description":"<p>Returns information about a single meter.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["esg","meters",":meterId"],"host":["https://core.sensaru.net/api/v1/modules/c1-reporting"],"query":[{"description":{"content":"<p>The language to return localized strings for. The language code can be either only the ISO 639 language code or the ISO 639 language code and the ISO 3166 country code separated by a dash (<code>-</code>). The language defaults do <code>en</code>.</p>\n","type":"text/plain"},"key":"lang","value":"en"}],"variable":[{"id":"21e47967-f145-4480-98fc-161110dfcf2b","description":{"content":"<p>(Required) The ID of the meter as returned by <code>/esg/meters</code>.</p>\n","type":"text/plain"},"type":"any","value":"fe8367c6-0923-4a2e-8cba-ceab583b089a","key":"meterId"}]}},"response":[{"id":"d274b674-9037-4e77-916c-ae65b2cbd1b1","name":"Success response","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/esg/meters/:meterId?lang=en","host":["{{baseUrl}}"],"path":["esg","meters",":meterId"],"query":[{"key":"lang","value":"en"}],"variable":[{"key":"meterId","value":"tempor adipisicing","description":"(Required) The ID of the meter as returned by `/esg/meters`."}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n  \"type\": \"Homegear HG-16A-EO\",\n  \"serialNumber\": \"EOD0412EBCB\",\n  \"locationId\": \"1000.105.8\",\n  \"role\": \"gas-meter\",\n  \"name\": \"Heating living room\",\n  \"parent\": \"21:15211.2_23\",\n  \"parentDirection\": 1,\n  \"description\": \"1-channel switching actuator.\",\n  \"longDescription\": \"The Homegear HG-16A-EO is a wireless 1-channel 230V/16A switching actuator. EnOcean is used as communication protocol. It features:\\n- bidirectional communication with resends\\n- encryption\\n- remote management\\n- meshing\\n- local control when the gateway is not available\",\n  \"tags\": [\n    \"ut pariatur fugiat dolore\",\n    \"elit ullamco dolore\"\n  ]\n}"}],"_postman_id":"f63ab401-7008-40d5-a5f5-b39e7a5aa44b"}],"id":"68c25b91-7c5b-4e64-9b0b-3b80ceb825d8","_postman_id":"68c25b91-7c5b-4e64-9b0b-3b80ceb825d8","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get meters","id":"cc36722f-b28c-441f-a2fe-c88f1084d5e5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-reporting/esg/meters?locationId=21:03150&locationIdFilterType=exact","description":"<p>Get all or a list of filtered meters. The list can be filtered by location, role or tag. With more information we can add more filters to this list.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["esg","meters"],"host":["https://core.sensaru.net/api/v1/modules/c1-reporting"],"query":[{"description":{"content":"<p>Filters by location, i. e. where the meter is located. This is the economic unit ID, property ID and administration unit ID separated by dots.</p>\n<p>For example</p>\n<ul>\n<li>Economic unit ID: <code>1000</code></li>\n<li>Property ID: <code>105</code></li>\n<li>Administration unit ID: <code>8</code></li>\n</ul>\n<p>becomes <code>1000.105.8</code>.</p>\n<p>When the meter is associated with the property and not an administration unit, the administration unit part including the dot is omitted: <code>1000.105</code>.</p>\n<p>When the meter is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: <code>1000</code>.</p>\n","type":"text/plain"},"key":"locationId","value":"21:03150"},{"description":{"content":"<p>Specifies how the location ID filter is applied. Valid options are:</p>\n<ul>\n<li><code>exact</code> (default): Only devices that have the exact location ID are returned.</li>\n<li><code>parent</code>: All devices that have a location ID that begins with the specified one are returned. Like this for example all devices of the building (property) or apartment (administration unit ID) are returned when the filter is set to the economic unit ID.</li>\n</ul>\n","type":"text/plain"},"key":"locationIdFilterType","value":"exact"},{"disabled":true,"description":{"content":"<p>Filters meters by their role.</p>\n","type":"text/plain"},"key":"role","value":"water-meter"},{"disabled":true,"description":{"content":"<p>Filters meters by tag. Tag examples are <code>heat-pump</code> or <code>elevator</code>. One or more tags (seperated by comma) can be provided. Tags are used to further specify what a meter is used for. A tag is just a string defined on the home client. So a tag can be arbitralily chosen. For automatisms it makes sense to stick to a predefined list though. Predifined tag values are (this list can be extended):</p>\n<ul>\n<li>building</li>\n<li>apartment</li>\n<li>warm-water</li>\n<li>cold-water</li>\n<li>elevator</li>\n<li>heat-pump</li>\n<li>photo-voltaic</li>\n</ul>\n","type":"text/plain"},"key":"tags","value":"heat-pump,building"},{"disabled":true,"description":{"content":"<p>Specify <code>nextKey</code> from the last result to get the next page.</p>\n","type":"text/plain"},"key":"offset","value":"-2048178"},{"disabled":true,"description":{"content":"<p>The number of meters to return. The maximum value is <code>1000</code>. Defaults to <code>100</code>.</p>\n","type":"text/plain"},"key":"limit","value":"-2048178"},{"disabled":true,"description":{"content":"<p>The language to return localized strings for. The language code can be either only the ISO 639 language code or the ISO 639 language code and the ISO 3166 country code separated by a dash (<code>-</code>). The language defaults do <code>en</code>.</p>\n","type":"text/plain"},"key":"lang","value":"en"}],"variable":[]}},"response":[{"id":"580c9086-0688-4230-b536-88aa972c9ce5","name":"Success response","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/esg/meters?locationId=pariatur quis occaecat qui enim&role=water-meter&tags=heat-pump,building&offset=-2048178&limit=-2048178&lang=en","host":["{{baseUrl}}"],"path":["esg","meters"],"query":[{"key":"locationId","value":"pariatur quis occaecat qui enim"},{"key":"role","value":"water-meter"},{"key":"tags","value":"heat-pump,building"},{"key":"offset","value":"-2048178"},{"key":"limit","value":"-2048178"},{"key":"lang","value":"en"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"meters\": [\n    {\n      \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n      \"type\": \"Homegear HG-16A-EO\",\n      \"serialNumber\": \"EOD0412EBCB\",\n      \"locationId\": \"1000.105.8\",\n      \"role\": \"power-meter\",\n      \"name\": \"Heating living room\",\n      \"parent\": \"21:15211.2_23\",\n      \"parentDirection\": 1,\n      \"description\": \"1-channel switching actuator.\",\n      \"longDescription\": \"The Homegear HG-16A-EO is a wireless 1-channel 230V/16A switching actuator. EnOcean is used as communication protocol. It features:\\n- bidirectional communication with resends\\n- encryption\\n- remote management\\n- meshing\\n- local control when the gateway is not available\",\n      \"tags\": [\n        \"sit laboris laborum pariatur\",\n        \"veniam ad do dolore Lorem\"\n      ]\n    },\n    {\n      \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n      \"type\": \"Homegear HG-16A-EO\",\n      \"serialNumber\": \"EOD0412EBCB\",\n      \"locationId\": \"1000.105.8\",\n      \"role\": \"water-meter\",\n      \"name\": \"Heating living room\",\n      \"parent\": \"21:15211.2_23\",\n      \"parentDirection\": 1,\n      \"description\": \"1-channel switching actuator.\",\n      \"longDescription\": \"The Homegear HG-16A-EO is a wireless 1-channel 230V/16A switching actuator. EnOcean is used as communication protocol. It features:\\n- bidirectional communication with resends\\n- encryption\\n- remote management\\n- meshing\\n- local control when the gateway is not available\",\n      \"tags\": [\n        \"aliqua non\",\n        \"veniam in deserunt Lorem Excepteur\"\n      ]\n    }\n  ],\n  \"responseMetadata\": {\n    \"nextKey\": \"ad ipsum proident\"\n  }\n}"},{"id":"9ce0e6b0-6475-44a1-a1d4-369464959278","name":"Invalid filter.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/esg/meters?locationId=pariatur quis occaecat qui enim&role=water-meter&tags=heat-pump,building&offset=-2048178&limit=-2048178&lang=en","host":["{{baseUrl}}"],"path":["esg","meters"],"query":[{"key":"locationId","value":"pariatur quis occaecat qui enim"},{"key":"role","value":"water-meter"},{"key":"tags","value":"heat-pump,building"},{"key":"offset","value":"-2048178"},{"key":"limit","value":"-2048178"},{"key":"lang","value":"en"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"cc36722f-b28c-441f-a2fe-c88f1084d5e5"}],"id":"4390affb-220b-4f99-a9e4-c31e74b4b3f2","_postman_id":"4390affb-220b-4f99-a9e4-c31e74b4b3f2","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}}],"id":"98224faa-d669-43ca-a457-acdc1f091b26","_postman_id":"98224faa-d669-43ca-a457-acdc1f091b26","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"c1-service-messages","item":[{"name":"service-messages","item":[{"name":"report","item":[{"name":"Get alarm report","id":"7cd03893-51e1-40a2-8de3-cd1eb3281e8d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-service-messages/service-messages/report?locationId=60:01082&dateFrom=1682892000&dateTo=1685570400","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["service-messages","report"],"host":["https://core.sensaru.net/api/v1/modules/c1-service-messages"],"query":[{"description":{"content":"<p>Filters by location, i. e. where the device is located. For devices associated with real estate properties this is the economic unit ID, property ID and administration unit ID separated by dots.\nFor example</p>\n<ul>\n<li>Economic unit ID: <code>1000</code></li>\n<li>Property ID: <code>105</code></li>\n<li>Administration unit ID: <code>8</code>\nbecomes <code>1000.105.8</code>.\nWhen the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: <code>1000.105</code>.\nWhen the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: <code>1000</code>.</li>\n</ul>\n","type":"text/plain"},"key":"locationId","value":"60:01082"},{"description":{"content":"<p>Start date as a Unix timestamp (in seconds, UTC).</p>\n","type":"text/plain"},"key":"dateFrom","value":"1682892000"},{"description":{"content":"<p>End date as a Unix timestamp (in seconds, UTC).</p>\n","type":"text/plain"},"key":"dateTo","value":"1685570400"}],"variable":[]}},"response":[],"_postman_id":"7cd03893-51e1-40a2-8de3-cd1eb3281e8d"}],"id":"0269d4ef-8d2c-47ea-b0f8-52641dd8060b","_postman_id":"0269d4ef-8d2c-47ea-b0f8-52641dd8060b","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get service messages","id":"ac7b9791-c3b0-4c91-b996-a5f9b5779883","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-service-messages/service-messages","description":"<p>Returns all active device service messages. The service messages can be filtered.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["service-messages"],"host":["https://core.sensaru.net/api/v1/modules/c1-service-messages"],"query":[{"disabled":true,"key":"dateFrom","value":"61510809"},{"disabled":true,"key":"dateTo","value":"61510809"},{"disabled":true,"key":"locationId","value":"tempor"},{"disabled":true,"key":"filter","value":"critical"},{"disabled":true,"key":"offset","value":"61510809"},{"disabled":true,"key":"limit","value":"61510809"}],"variable":[]}},"response":[{"id":"dc7374cb-17fd-4184-ba47-55bbed899976","name":"Success response","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/service-messages?dateFrom=61510809&dateTo=61510809&locationId=tempor&filter=critical&offset=61510809&limit=61510809","host":["{{baseUrl}}"],"path":["service-messages"],"query":[{"key":"dateFrom","value":"61510809"},{"key":"dateTo","value":"61510809"},{"key":"locationId","value":"tempor"},{"key":"filter","value":"critical"},{"key":"offset","value":"61510809"},{"key":"limit","value":"61510809"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"serviceMessages\": [\n    {\n      \"id\": \"bcf13894-9e1a-0506-b994-7e434693bd4d\",\n      \"createdAt\": 1631388075,\n      \"locationId\": \"1000.105.8\",\n      \"priority\": \"warning\",\n      \"message\": \"The device is offline.\",\n      \"header\": \"Water meter\",\n      \"footer\": \"Demo city, demo street 23\",\n      \"url\": \"https://device-management.sensaru.cloud/service-message/e05fd897-ef91-0f20-be49-058ca498ba04\"\n    },\n    {\n      \"id\": \"bcf13894-9e1a-0506-b994-7e434693bd4d\",\n      \"createdAt\": 1631388075,\n      \"locationId\": \"1000.105.8\",\n      \"priority\": \"warning\",\n      \"message\": \"The device is offline.\",\n      \"header\": \"Water meter\",\n      \"footer\": \"Demo city, demo street 23\",\n      \"url\": \"https://device-management.sensaru.cloud/service-message/e05fd897-ef91-0f20-be49-058ca498ba04\"\n    }\n  ],\n  \"responseMetadata\": {\n    \"nextKey\": \"sint labore laboris deserunt in\"\n  }\n}"}],"_postman_id":"ac7b9791-c3b0-4c91-b996-a5f9b5779883"}],"id":"5d0a547c-3459-48d2-bfb2-19fb09dd78a5","_postman_id":"5d0a547c-3459-48d2-bfb2-19fb09dd78a5","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"devices","item":[{"name":"{typeId}","item":[{"name":"Get alarm rule templates","id":"60e562a8-5516-4c07-9d97-96d25642e217","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-service-messages/devices/:typeId/alarm-rule-templates","description":"<p>Returns all active device service messages. The service messages can be filtered.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["devices",":typeId","alarm-rule-templates"],"host":["https://core.sensaru.net/api/v1/modules/c1-service-messages"],"query":[],"variable":[{"id":"ec5dc386-36b3-417f-9bdd-8b47fc9a1eb2","type":"any","value":"s1-02-01","key":"typeId"}]}},"response":[{"id":"487bafac-38fc-449f-98e7-9c6b4529ba29","name":"Success response","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/service-messages?dateFrom=61510809&dateTo=61510809&locationId=tempor&filter=critical&offset=61510809&limit=61510809","host":["{{baseUrl}}"],"path":["service-messages"],"query":[{"key":"dateFrom","value":"61510809"},{"key":"dateTo","value":"61510809"},{"key":"locationId","value":"tempor"},{"key":"filter","value":"critical"},{"key":"offset","value":"61510809"},{"key":"limit","value":"61510809"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"serviceMessages\": [\n    {\n      \"id\": \"bcf13894-9e1a-0506-b994-7e434693bd4d\",\n      \"createdAt\": 1631388075,\n      \"locationId\": \"1000.105.8\",\n      \"priority\": \"warning\",\n      \"message\": \"The device is offline.\",\n      \"header\": \"Water meter\",\n      \"footer\": \"Demo city, demo street 23\",\n      \"url\": \"https://device-management.sensaru.cloud/service-message/e05fd897-ef91-0f20-be49-058ca498ba04\"\n    },\n    {\n      \"id\": \"bcf13894-9e1a-0506-b994-7e434693bd4d\",\n      \"createdAt\": 1631388075,\n      \"locationId\": \"1000.105.8\",\n      \"priority\": \"warning\",\n      \"message\": \"The device is offline.\",\n      \"header\": \"Water meter\",\n      \"footer\": \"Demo city, demo street 23\",\n      \"url\": \"https://device-management.sensaru.cloud/service-message/e05fd897-ef91-0f20-be49-058ca498ba04\"\n    }\n  ],\n  \"responseMetadata\": {\n    \"nextKey\": \"sint labore laboris deserunt in\"\n  }\n}"}],"_postman_id":"60e562a8-5516-4c07-9d97-96d25642e217"}],"id":"4ea13df6-bdf9-446e-9c33-dd25f56c31af","_postman_id":"4ea13df6-bdf9-446e-9c33-dd25f56c31af","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}}],"id":"36cde1ce-8643-4c05-a074-a699ec555e0c","_postman_id":"36cde1ce-8643-4c05-a074-a699ec555e0c","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"alarm-definitions","item":[{"name":"{alarmDefinitionId}","item":[{"name":"Delete alarm definition","id":"3c85c561-d4a4-42fe-ad7b-98a1371dab44","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"},{"key":"PRIVATE-TOKEN","value":"","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-service-messages/admin/alarm-definitions/:alarmDefinitionId","description":"<p>Creates a device within Sensaru Cloud. You can only (pre-)create actual devices. This does not work for edge clients or communication modules.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["admin","alarm-definitions",":alarmDefinitionId"],"host":["https://core.sensaru.net/api/v1/modules/c1-service-messages"],"query":[],"variable":[{"id":"fe405692-2018-4d00-877e-c6783811364d","type":"any","value":"a4241de8-ada1-459f-9f6d-974e9e2c1acc","key":"alarmDefinitionId"}]}},"response":[{"id":"144b02a0-44de-4359-b6b9-0230169a2ce4","name":"Returns success when the device was successfully created.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"id\",\n  \"homeClient\": \"occaecat\",\n  \"name\": \"ut\",\n  \"operationMode\": -38921153,\n  \"notes\": \"mollit eiusmod\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/devices"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""},{"id":"a8b898db-0572-4898-87eb-b42ae08a4323","name":"Returns one of the Sensaru Cloud REST error codes on error.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"id\",\n  \"homeClient\": \"occaecat\",\n  \"name\": \"ut\",\n  \"operationMode\": -38921153,\n  \"notes\": \"mollit eiusmod\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/devices"},"status":"Bad Request","code":400,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"3c85c561-d4a4-42fe-ad7b-98a1371dab44"},{"name":"Update alarm definition","id":"6aaf1d10-e8fb-43b9-b720-d2ecea336735","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"},{"key":"PRIVATE-TOKEN","value":"","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"locationId\": \"1:545\",\r\n    \"deviceId\": \"07967581-dcdb-47f0-8384-c3c7d056c544\",\r\n    \"alarmDefinitionTemplateId\": \"heating-check\",\r\n    \"values\": [0.9],\r\n    \"priority\": 3\r\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-service-messages/admin/alarm-definitions/:alarmDefinitionId","description":"<p>Creates a device within Sensaru Cloud. You can only (pre-)create actual devices. This does not work for edge clients or communication modules.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["admin","alarm-definitions",":alarmDefinitionId"],"host":["https://core.sensaru.net/api/v1/modules/c1-service-messages"],"query":[],"variable":[{"id":"b2ecef2f-8c55-43f4-b59b-f01b07a4f555","type":"any","value":"a4241de8-ada1-459f-9f6d-974e9e2c1acc","key":"alarmDefinitionId"}]}},"response":[{"id":"64519355-d70f-4ebf-be14-1006d3b44d10","name":"Returns success when the device was successfully created.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"id\",\n  \"homeClient\": \"occaecat\",\n  \"name\": \"ut\",\n  \"operationMode\": -38921153,\n  \"notes\": \"mollit eiusmod\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/devices"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""},{"id":"f376f0f8-2d9a-4268-864d-fcb44f336b2b","name":"Returns one of the Sensaru Cloud REST error codes on error.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"id\",\n  \"homeClient\": \"occaecat\",\n  \"name\": \"ut\",\n  \"operationMode\": -38921153,\n  \"notes\": \"mollit eiusmod\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/devices"},"status":"Bad Request","code":400,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"6aaf1d10-e8fb-43b9-b720-d2ecea336735"}],"id":"b4a9be71-be54-4279-a100-cf79c77c3c88","_postman_id":"b4a9be71-be54-4279-a100-cf79c77c3c88","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}},{"name":"Get alarm definitions","id":"a8848352-1798-4272-85f9-c5dc21efd645","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"PRIVATE-TOKEN","value":"","description":"<p>API key for authentication.</p>\n"},{"key":"C1-BUSINESS-PARTNER","value":""}],"url":"https://core.sensaru.net/api/v1/modules/c1-service-messages/alarm-definitions","description":"<p>Get all or a list of filtered devices. The list can be filtered by location, role or service message level.</p>\n<p>When an ERP system is used and connected to Sensaru Cloud, these IDs are the same as defined there.\n  </p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["alarm-definitions"],"host":["https://core.sensaru.net/api/v1/modules/c1-service-messages"],"query":[{"disabled":true,"description":{"content":"<p>Filters by location, i. e. where the device is located. For devices associated with real estate properties this is the economic unit ID, property ID and administration unit ID separated by dots.</p>\n<p>For example</p>\n<ul>\n<li>Economic unit ID: <code>1000</code></li>\n<li>Property ID: <code>105</code></li>\n<li>Administration unit ID: <code>8</code></li>\n</ul>\n<p>becomes <code>1000.105.8</code>.</p>\n<p>When the device is associated with the property and not an administration unit, the administration unit part including the dot is omitted: <code>1000.105</code>.</p>\n<p>When the device is associated with the economic unit and neither a property nor an administration unit, omit both parts including the dot: <code>1000</code>.</p>\n","type":"text/plain"},"key":"locationId","value":"70:18960"},{"disabled":true,"description":{"content":"<p>Specifies how the location ID filter is applied. Valid options are:</p>\n<ul>\n<li><code>exact</code> (default): Only devices that have the exact location ID are returned.</li>\n<li><code>parent</code>: All devices that have a location ID that begins with the specified one are returned. Like this for example all devices of the building (property) or apartment (administration unit ID) are returned when the filter is set to the economic unit ID.</li>\n</ul>\n","type":"text/plain"},"key":"locationIdFilterType","value":"parent"}],"variable":[]}},"response":[{"id":"637ea1f3-ebe3-43ad-b72b-64ad03685c7d","name":"Success response","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/devices?locationId=aliquip&locationIdFilterType=exact&roles=90.01.00&filter=critical&offset=98378940&limit=98378940&lang=en-US&orderBy=locationId&groupBy=locationId","host":["{{baseUrl}}"],"path":["devices"],"query":[{"key":"locationId","value":"aliquip"},{"key":"locationIdFilterType","value":"exact"},{"key":"roles","value":"90.01.00"},{"key":"filter","value":"critical"},{"key":"offset","value":"98378940"},{"key":"limit","value":"98378940"},{"key":"lang","value":"en-US"},{"key":"orderBy","value":"locationId"},{"key":"groupBy","value":"locationId"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"devices\": [\n    {\n      \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n      \"nativeId\": 107,\n      \"type\": \"Homegear HG-16A-EO\",\n      \"serialNumber\": \"EOD0412EBCB\",\n      \"softwareVersion\": \"esse culpa eiusmod\",\n      \"interface\": \"ENO14260490011\",\n      \"locationId\": \"60:1000.105.8\",\n      \"status\": \"critical\",\n      \"operationMode\": 1,\n      \"name\": \"Heating living room\",\n      \"notes\": \"Next to the electic cabinet\",\n      \"equipmentId\": \"AMW44_01_00_91_BWM01\",\n      \"parent\": \"21:15211.2_23\",\n      \"parentDirection\": 1,\n      \"description\": \"1-channel switching actuator.\",\n      \"longDescription\": \"The Homegear HG-16A-EO is a wireless 1-channel 230V/16A switching actuator. EnOcean is used as communication protocol. It features:\\n- bidirectional communication with resends\\n- encryption\\n- remote management\\n- meshing\\n- local control when the gateway is not available\",\n      \"roles\": [\n        900100,\n        900100\n      ],\n      \"sections\": [\n        \"primary-facilities\",\n        \"primary-facilities\"\n      ],\n      \"tags\": [\n        \"heat-pump\",\n        \"heat-pump\"\n      ],\n      \"addresses\": [\n        {\n          \"street\": \"Main street\",\n          \"streetNumber\": \"21a\",\n          \"zip\": \"32144\",\n          \"city\": \"Hamburg\",\n          \"country\": \"Germany\"\n        },\n        {\n          \"street\": \"Main street\",\n          \"streetNumber\": \"21a\",\n          \"zip\": \"32144\",\n          \"city\": \"Hamburg\",\n          \"country\": \"Germany\"\n        }\n      ],\n      \"locationName\": \"Hauptstraße 22-30, 12345 Stadt\",\n      \"predecessors\": [\n        {\n          \"serialNumber\": \"BB53998983\",\n          \"type\": \"Kamstrup flowIQ 2200\",\n          \"activeUntil\": 1660221715657\n        },\n        {\n          \"serialNumber\": \"BB53998983\",\n          \"type\": \"Kamstrup flowIQ 2200\",\n          \"activeUntil\": 1660221715657\n        }\n      ],\n      \"dataPoints\": [\n        {\n          \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n          \"nativeId\": \"1.TOTAL_VOLUME\",\n          \"service\": false,\n          \"value\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"updatedAt\": 1631388075,\n          \"parentId\": \"aac90cc6-b84c-0f04-8e7f-9310465e4feb\",\n          \"priority\": \"error\",\n          \"role\": \"90.01.00\",\n          \"localizedValue\": \"21,3 °C\",\n          \"label\": \"Total volume\",\n          \"icon\": \"icon-pressure\",\n          \"unit\": \"l\",\n          \"unitCode\": 62\n        },\n        {\n          \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n          \"nativeId\": \"1.TOTAL_VOLUME\",\n          \"service\": false,\n          \"value\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"updatedAt\": 1631388075,\n          \"parentId\": \"aac90cc6-b84c-0f04-8e7f-9310465e4feb\",\n          \"priority\": \"error\",\n          \"role\": \"90.01.00\",\n          \"localizedValue\": \"21,3 °C\",\n          \"label\": \"Total volume\",\n          \"icon\": \"icon-pressure\",\n          \"unit\": \"l\",\n          \"unitCode\": 62\n        }\n      ],\n      \"homeClientId\": \"60:1000.105.8\"\n    },\n    {\n      \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n      \"nativeId\": 107,\n      \"type\": \"Homegear HG-16A-EO\",\n      \"serialNumber\": \"EOD0412EBCB\",\n      \"softwareVersion\": \"consequat eius\",\n      \"interface\": \"ENO14260490011\",\n      \"locationId\": \"60:1000.105.8\",\n      \"status\": \"warning\",\n      \"operationMode\": 1,\n      \"name\": \"Heating living room\",\n      \"notes\": \"Next to the electic cabinet\",\n      \"equipmentId\": \"AMW44_01_00_91_BWM01\",\n      \"parent\": \"21:15211.2_23\",\n      \"parentDirection\": 1,\n      \"description\": \"1-channel switching actuator.\",\n      \"longDescription\": \"The Homegear HG-16A-EO is a wireless 1-channel 230V/16A switching actuator. EnOcean is used as communication protocol. It features:\\n- bidirectional communication with resends\\n- encryption\\n- remote management\\n- meshing\\n- local control when the gateway is not available\",\n      \"roles\": [\n        900100,\n        900100\n      ],\n      \"sections\": [\n        \"primary-facilities\",\n        \"primary-facilities\"\n      ],\n      \"tags\": [\n        \"heat-pump\",\n        \"heat-pump\"\n      ],\n      \"addresses\": [\n        {\n          \"street\": \"Main street\",\n          \"streetNumber\": \"21a\",\n          \"zip\": \"32144\",\n          \"city\": \"Hamburg\",\n          \"country\": \"Germany\"\n        },\n        {\n          \"street\": \"Main street\",\n          \"streetNumber\": \"21a\",\n          \"zip\": \"32144\",\n          \"city\": \"Hamburg\",\n          \"country\": \"Germany\"\n        }\n      ],\n      \"locationName\": \"Hauptstraße 22-30, 12345 Stadt\",\n      \"predecessors\": [\n        {\n          \"serialNumber\": \"BB53998983\",\n          \"type\": \"Kamstrup flowIQ 2200\",\n          \"activeUntil\": 1660221715657\n        },\n        {\n          \"serialNumber\": \"BB53998983\",\n          \"type\": \"Kamstrup flowIQ 2200\",\n          \"activeUntil\": 1660221715657\n        }\n      ],\n      \"dataPoints\": [\n        {\n          \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n          \"nativeId\": \"1.TOTAL_VOLUME\",\n          \"service\": true,\n          \"value\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"updatedAt\": 1631388075,\n          \"parentId\": \"aac90cc6-b84c-0f04-8e7f-9310465e4feb\",\n          \"priority\": \"warning\",\n          \"role\": \"90.01.00\",\n          \"localizedValue\": \"21,3 °C\",\n          \"label\": \"Total volume\",\n          \"icon\": \"icon-pressure\",\n          \"unit\": \"l\",\n          \"unitCode\": 62\n        },\n        {\n          \"id\": \"d23d6fd0-116a-11ec-9437-7760f7e49837\",\n          \"nativeId\": \"1.TOTAL_VOLUME\",\n          \"service\": true,\n          \"value\": {\n            \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n          },\n          \"updatedAt\": 1631388075,\n          \"parentId\": \"aac90cc6-b84c-0f04-8e7f-9310465e4feb\",\n          \"priority\": \"critical\",\n          \"role\": \"90.01.00\",\n          \"localizedValue\": \"21,3 °C\",\n          \"label\": \"Total volume\",\n          \"icon\": \"icon-pressure\",\n          \"unit\": \"l\",\n          \"unitCode\": 62\n        }\n      ],\n      \"homeClientId\": \"60:1000.105.8\"\n    }\n  ],\n  \"responseMetadata\": {\n    \"nextKey\": \"ipsum occaecat exercitation ea in\"\n  }\n}"},{"id":"25f41cbf-42c3-42d3-b132-4ce3af626592","name":"Invalid filter.","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/devices?locationId=aliquip&locationIdFilterType=exact&roles=90.01.00&filter=critical&offset=98378940&limit=98378940&lang=en-US&orderBy=locationId&groupBy=locationId","host":["{{baseUrl}}"],"path":["devices"],"query":[{"key":"locationId","value":"aliquip"},{"key":"locationIdFilterType","value":"exact"},{"key":"roles","value":"90.01.00"},{"key":"filter","value":"critical"},{"key":"offset","value":"98378940"},{"key":"limit","value":"98378940"},{"key":"lang","value":"en-US"},{"key":"orderBy","value":"locationId"},{"key":"groupBy","value":"locationId"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"a8848352-1798-4272-85f9-c5dc21efd645"},{"name":"Create alarm definition","id":"4a0579d4-cc86-4268-8a00-20179131c80f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"PRIVATE-TOKEN","value":"","type":"text"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"locationId\": \"1:545\",\n    \"deviceId\": \"07967581-dcdb-47f0-8384-c3c7d056c544\",\n    \"alarmDefinitionTemplateId\": \"pressure-loss\",\n    \"values\": [0.8],\n    \"priority\": 3\n}","options":{"raw":{"language":"json"}}},"url":"https://core.sensaru.net/api/v1/modules/c1-service-messages/admin/alarm-definitions","description":"<p>Creates a device within Sensaru Cloud. You can only (pre-)create actual devices. This does not work for edge clients or communication modules.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["admin","alarm-definitions"],"host":["https://core.sensaru.net/api/v1/modules/c1-service-messages"],"query":[],"variable":[]}},"response":[{"id":"f6971ad5-6534-4900-a080-f9e7a12c9a5b","name":"Returns success when the device was successfully created.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"id\",\n  \"homeClient\": \"occaecat\",\n  \"name\": \"ut\",\n  \"operationMode\": -38921153,\n  \"notes\": \"mollit eiusmod\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/devices"},"status":"OK","code":200,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""},{"id":"02482357-7cda-4751-9bfa-258aee228fd6","name":"Returns one of the Sensaru Cloud REST error codes on error.","originalRequest":{"method":"POST","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"body":{"mode":"raw","raw":"{\n  \"serialNumber\": \"id\",\n  \"homeClient\": \"occaecat\",\n  \"name\": \"ut\",\n  \"operationMode\": -38921153,\n  \"notes\": \"mollit eiusmod\"\n}","options":{"raw":{"language":"json"}}},"url":"{{baseUrl}}/devices"},"status":"Bad Request","code":400,"_postman_previewlanguage":"text","header":[{"key":"Content-Type","value":"text/plain"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"4a0579d4-cc86-4268-8a00-20179131c80f"},{"name":"Get alarm definition templates","id":"27874668-3209-436f-b285-22527859ce3d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json"},{"key":"C1-BUSINESS-PARTNER","value":"","type":"text"}],"url":"https://core.sensaru.net/api/v1/modules/c1-service-messages/alarm-definitions/templates?lang=en-US","description":"<p>Returns all active device service messages. The service messages can be filtered.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}},"urlObject":{"path":["alarm-definitions","templates"],"host":["https://core.sensaru.net/api/v1/modules/c1-service-messages"],"query":[{"description":{"content":"<p>The language to return localized strings for. The language code is the ISO 639 language code and the ISO 3166 country code separated by a dash (<code>-</code>). The language defaults to <code>en-US</code>.</p>\n","type":"text/plain"},"key":"lang","value":"en-US"}],"variable":[]}},"response":[{"id":"131ca619-b572-446a-a37c-8ae84b8196e9","name":"Success response","originalRequest":{"method":"GET","header":[{"description":"Added as a part of security scheme: apikey","key":"PRIVATE-TOKEN","value":"<API Key>"}],"url":{"raw":"{{baseUrl}}/service-messages?dateFrom=61510809&dateTo=61510809&locationId=tempor&filter=critical&offset=61510809&limit=61510809","host":["{{baseUrl}}"],"path":["service-messages"],"query":[{"key":"dateFrom","value":"61510809"},{"key":"dateTo","value":"61510809"},{"key":"locationId","value":"tempor"},{"key":"filter","value":"critical"},{"key":"offset","value":"61510809"},{"key":"limit","value":"61510809"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"serviceMessages\": [\n    {\n      \"id\": \"bcf13894-9e1a-0506-b994-7e434693bd4d\",\n      \"createdAt\": 1631388075,\n      \"locationId\": \"1000.105.8\",\n      \"priority\": \"warning\",\n      \"message\": \"The device is offline.\",\n      \"header\": \"Water meter\",\n      \"footer\": \"Demo city, demo street 23\",\n      \"url\": \"https://device-management.sensaru.cloud/service-message/e05fd897-ef91-0f20-be49-058ca498ba04\"\n    },\n    {\n      \"id\": \"bcf13894-9e1a-0506-b994-7e434693bd4d\",\n      \"createdAt\": 1631388075,\n      \"locationId\": \"1000.105.8\",\n      \"priority\": \"warning\",\n      \"message\": \"The device is offline.\",\n      \"header\": \"Water meter\",\n      \"footer\": \"Demo city, demo street 23\",\n      \"url\": \"https://device-management.sensaru.cloud/service-message/e05fd897-ef91-0f20-be49-058ca498ba04\"\n    }\n  ],\n  \"responseMetadata\": {\n    \"nextKey\": \"sint labore laboris deserunt in\"\n  }\n}"}],"_postman_id":"27874668-3209-436f-b285-22527859ce3d"}],"id":"4884c820-827f-4c09-bb50-f63881b1c5d1","_postman_id":"4884c820-827f-4c09-bb50-f63881b1c5d1","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}}],"id":"ff326a95-7347-497f-b394-ea92333cde21","_postman_id":"ff326a95-7347-497f-b394-ea92333cde21","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"5c7d1043-3f47-4af9-b170-e2019402f726","id":"5c7d1043-3f47-4af9-b170-e2019402f726","name":"Sensaru Cloud","type":"collection"}}}],"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"PRIVATE-TOKEN"},{"key":"value","value":""}]}},"event":[{"listen":"prerequest","script":{"type":"text/javascript","exec":[""],"id":"3cdd1089-f493-4674-94d1-5e661eb8055e"}},{"listen":"test","script":{"type":"text/javascript","exec":[""],"id":"bd15a3c8-e0ff-49ff-b0ce-bcb5a9511777"}}],"variable":[{"key":"apiKey","value":""},{"key":"bp","value":""},{"key":"sd","value":"65490af0-ef62-11e9-847a-a58a2ea33526"},{"key":"coreBaseUrl","value":"https://core.sensaru.net/api/v1"},{"key":"reportingBaseUrl","value":"https://core.sensaru.net/api/v1/modules/c1-reporting"},{"key":"serviceMessagesBaseUrl","value":"https://core.sensaru.net/api/v1/modules/c1-service-messages"},{"key":"deviceManagementBaseUrl","value":"https://core.sensaru.net/api/v1/modules/c1-device-management"}]}