{"info":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","description":"<html><head></head><body><h2 id=\"introduction\"><strong>Introduction</strong></h2>\n<p>The <strong>Public API</strong> provides a robust interface for interacting with KODE Labs' smart building platform. This API enables seamless integration for managing buildings, devices, points, timeseries data, and more.</p>\n<p><strong>Key Features:</strong></p>\n<ul>\n<li><p>OAuth 2.0 authentication.</p>\n</li>\n<li><p>Comprehensive building and device management.</p>\n</li>\n<li><p>Historical and real-time data access.</p>\n</li>\n<li><p>Standardized RESTful endpoints with JSON responses.</p>\n</li>\n</ul>\n<p><strong>Target Audience:</strong></p>\n<ul>\n<li><p>Developers building integrations for smart buildings.</p>\n</li>\n<li><p>IoT system integrators.</p>\n</li>\n<li><p>Businesses managing large portfolios of connected devices.</p>\n</li>\n</ul>\n<h2 id=\"getting-started\"><strong>Getting Started</strong></h2>\n<h3 id=\"set-up-environment-variables\"><strong>Set Up Environment Variables</strong></h3>\n<ul>\n<li><p>Add the following environment variables in Postman:</p>\n<ul>\n<li><p><code>baseUrl</code>: The base URL for API requests.</p>\n</li>\n<li><p><code>access_token</code>: The authentication token.</p>\n</li>\n<li><p><code>buildingId</code>, <code>deviceId</code>, <code>pointId</code>, etc., as needed.</p>\n</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"rate-limits\">Rate Limits</h3>\n<p>We enforce global rate limits per environment (e.g., <code>acme.kodelabs.com</code>):</p>\n<ul>\n<li><p><strong>5 requests per second</strong></p>\n</li>\n<li><p><strong>100 requests per minute</strong></p>\n</li>\n<li><p><strong>500 requests per hour</strong></p>\n</li>\n</ul>\n<p>If any window is exhausted, the request fails with <strong>429 Too Many Requests</strong> (even if other windows still have quota).</p>\n<h2 id=\"how-limits-are-counted\">How limits are counted</h2>\n<ul>\n<li><p><strong>Scope:</strong> per environemnt (i.e acme.kodelabs.com)</p>\n</li>\n<li><p><strong>Windows:</strong> rolling windows of 1s, 60s, and 3600s applied concurrently.</p>\n</li>\n<li><p><strong>What counts:</strong> every request that reaches our gateway (success or error, including 4xx/5xx).</p>\n</li>\n<li><p><strong>Unauthenticated requests:</strong> rejected (no rate-limit tracking without an API key).</p>\n</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"37847641","collectionId":"0db06e08-772a-492b-9a93-f5d18c67b15c","publishedId":"2sAYkEqfGB","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2025-04-15T09:02:21.000Z"},"item":[{"name":"Authorization","item":[{"name":"discover endpoint","id":"a262fde8-80db-4918-a24b-d9b0cfb2db5d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[],"url":"https://api.kodelabs.com/oauth2/v1/.well-known/oauth-authorization-server","description":"<p>Before requesting an access token, retrieve the OAuth2 authorization server metadata.</p>\n","urlObject":{"protocol":"https","path":["oauth2","v1",".well-known","oauth-authorization-server"],"host":["api","kodelabs","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"a262fde8-80db-4918-a24b-d9b0cfb2db5d"},{"name":"token","event":[{"listen":"test","script":{"exec":["var result = pm.response.json();","pm.environment.set(\"access_token\", result.access_token);"],"type":"text/javascript","packages":{},"id":"a8c0491d-b04a-4e19-892d-72d9e7504199"}}],"id":"7375a37e-5b14-4027-bfbd-2a58b03d11b5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"urlencoded","urlencoded":[{"key":"grant_type","value":"client_credentials","description":"<p>Value of grant type. Check in discovery endpoint for available values</p>\n","type":"text"},{"key":"scope","value":"bms","description":"<p>Scope required for access_token. Check in discovery endpoint for available values</p>\n","type":"text"},{"key":"client_assertion_type","value":"urn:ietf:params:oauth:client-assertion-type:jwt-bearer","description":"<p>Value of assertion type, defined by protocol</p>\n","type":"text"},{"key":"client_assertion","value":"<client_assertion>","description":"<p>JWT assertion generated using private key</p>\n","type":"text"}]},"url":"https://api.kodelabs.com/oauth2/v1/token","description":"<p>Generate an access token using client credentials</p>\n<h4 id=\"jwt-with-shared-key-private-key\">JWT with shared key (Private Key)</h4>\n<p>After creating the Private JWT credential and generating a token with that key (as specified in <a href=\"https://datatracker.ietf.org/doc/html/rfc7523#section-2.2\">https://datatracker.ietf.org/doc/html/rfc7523#section-2.2</a>) in the request you need to set <code>client_assertion_type</code> as <code>urn:ietf:params:oauth:client-assertion-type:jwt-bearer</code> and set <code>client_assertion</code> to be the generated token (generate the token as specified in <a href=\"https://datatracker.ietf.org/doc/html/rfc7523#section-3\">https://datatracker.ietf.org/doc/html/rfc7523#section-3</a>).</p>\n","urlObject":{"protocol":"https","path":["oauth2","v1","token"],"host":["api","kodelabs","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"7375a37e-5b14-4027-bfbd-2a58b03d11b5"},{"name":"revoke","id":"2cccf74e-1d12-47df-8401-78ecf57f5392","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"authorization","value":"test"}],"body":{"mode":"urlencoded","urlencoded":[{"key":"token","value":"<access_token>","description":"<p>Token to revoke</p>\n","type":"text"},{"key":"tokenHint","value":"ACCESS_TOKEN","description":"<p>Hint about type of token sent.</p>\n","type":"text"},{"key":"client_assertion","value":"<jwt>","description":"<p>JWT token generated using private key.</p>\n","type":"text"},{"key":"client_assertion_type","value":"urn:ietf:params:oauth:client-assertion-type:jwt-bearer","description":"<p>JWT assertion generated using private key</p>\n","type":"text"}]},"url":"https://api.kodelabs.com/oauth2/v1/revoke","description":"<p>To invalidate an access token before it expires, use the revoke token endpoint.</p>\n","urlObject":{"protocol":"https","path":["oauth2","v1","revoke"],"host":["api","kodelabs","com"],"query":[],"variable":[]}},"response":[],"_postman_id":"2cccf74e-1d12-47df-8401-78ecf57f5392"}],"id":"4452d010-1222-4c3c-b45f-bfcd991f1ffb","description":"<h1 id=\"oauth-20-authentication\"><strong>OAuth 2.0 Authentication</strong></h1>\n<p>The API requires OAuth 2.0 authentication.<br /><strong>Supported authentication flows</strong>:</p>\n<ul>\n<li><p><strong>Private Key JWT</strong> (recommended)</p>\n</li>\n<li><p><strong>Client Secret</strong></p>\n</li>\n</ul>\n<h2 id=\"security-recommendation\">Security Recommendation</h2>\n<p>For improved security, <strong>use Private Key JWT</strong> over the traditional Client Secret method.</p>\n<p>Private Key JWT avoids transmitting shared secrets over the network and uses asymmetric cryptography, making it more secure for automated or production-grade client authentication.</p>\n<h2 id=\"1-private-key-jwt\">1. Private Key JWT</h2>\n<p>Private Key JWT is an OAuth 2.0 client authentication method in which the client proves its identity by sending a JWT signed with its private key.</p>\n<h3 id=\"11-steps-for-private-key-jwt-authentication\">1.1 Steps for Private Key JWT Authentication</h3>\n<ol>\n<li><p>Create a <strong>Service Account</strong> with the required permissions.</p>\n</li>\n<li><p>Generate an <strong>RSA key pair</strong> for authentication.</p>\n</li>\n<li><p>Generate a <strong>JWT assertion</strong> using the private key (signed with RS512).</p>\n</li>\n<li><p>Request an access token from <code>/oauth2/v1/token</code>.</p>\n</li>\n</ol>\n<h3 id=\"12-jwt-header\"><strong>1.2 JWT Header</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Claim</th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>kid</td>\n<td>Id of public key (Key field to Credentials table inside Service Account Details)</td>\n</tr>\n<tr>\n<td>alg</td>\n<td>RS512</td>\n</tr>\n<tr>\n<td>typ</td>\n<td>JWT</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"13-jwt-payload-claims\"><strong>1.3 JWT Payload Claims</strong></h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Claim</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>aud</td>\n<td>The full URL of the resource you're trying to access using the JWT to authenticate.  <br />For access token request: {token_endpoint} from OAuth2 discovery endpoint.  <br />For revoking access token: {revocation_endpoint} from OAuth2 discovery endpoint.</td>\n</tr>\n<tr>\n<td>exp</td>\n<td>The token expiration time in seconds since epoch. The request fails if the expiration time is more than one hour in the future or if the token is already expired.</td>\n</tr>\n<tr>\n<td>iss</td>\n<td>The issuer of the token. Value: Client ID provided by KODEOS Service Account.</td>\n</tr>\n<tr>\n<td>sub</td>\n<td>The subject of the token. Value: Client ID provided by KODEOS Service Account.</td>\n</tr>\n<tr>\n<td>jti</td>\n<td>The unique token identifier. Value: Unique value generated on the client side.</td>\n</tr>\n<tr>\n<td>iat</td>\n<td>The timestamp when the token was issued, in seconds. Must be a time before the request is received.</td>\n</tr>\n</tbody>\n</table>\n</div><p>This JWT is <strong>used only once</strong> to obtain or revoke an <code>access_token</code>.</p>\n<h3 id=\"14-access-token-request\">1.4 Access Token Request</h3>\n<p>With the generated JWT (signed with RS512), request an <code>access_token</code> from the token endpoint. The returned token is <strong>valid for 1 hour</strong> and must be included in all API requests using the <code>Authorization</code> header.</p>\n<h2 id=\"2-client-secret\">2. Client Secret</h2>\n<p>Client Secret is an OAuth 2.0 authentication method where the client includes a shared secret—known only to the client and the authorization server—in the request to prove its identity.</p>\n<h3 id=\"21-steps-for-client-secret-authentication\">2.1 Steps for Client Secret Authentication</h3>\n<ol>\n<li><p>Create a <strong>Service Account</strong> with the required permissions.</p>\n</li>\n<li><p>Create a <strong>Client Secret credential</strong> for authentication.</p>\n</li>\n<li><p>Request an access token from <code>/oauth2/v1/token</code>.</p>\n</li>\n</ol>\n<h3 id=\"22-steps-for-client-secret-authentication\">2.2. Steps for Client Secret Authentication:</h3>\n<ol>\n<li><p><strong>Create a Service Account</strong> with required permissions.</p>\n</li>\n<li><p><strong>Create a Client Secret credential</strong> for authentication.</p>\n</li>\n<li><p><strong>Request an Access Token</strong> from the <code>/oauth2/v1/token</code> endpoint.</p>\n</li>\n</ol>\n<h3 id=\"23-access-token-request\">2.3 Access Token Request</h3>\n<p>After creating the client secret credential, request a token by providing:</p>\n<ul>\n<li><p><code>client_id</code> and <code>client_secret</code></p>\n</li>\n<li><p>Supported authentication methods:</p>\n<ul>\n<li><p><code>client_secret_basic</code></p>\n</li>\n<li><p><code>client_secret_post</code></p>\n</li>\n</ul>\n</li>\n<li><p>For more information follow <a href=\"https://datatracker.ietf.org/doc/html/rfc6749#section-2.3.1\">Client Password.</a></p>\n</li>\n</ul>\n<p>Access tokens are valid for 1 hour.</p>\n<p>Include the token in all API requests using the Authorization header.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"type":"text/javascript","packages":{},"exec":[""],"id":"7d3eb3b5-a97c-4453-9f9e-9acd4ddb6301"}},{"listen":"test","script":{"type":"text/javascript","packages":{},"exec":[""],"id":"c2c721b0-74f7-4b83-b654-1893cca9ca6d"}}],"_postman_id":"4452d010-1222-4c3c-b45f-bfcd991f1ffb"},{"name":"KODEOS API","item":[{"name":"Building","item":[{"name":"list buildings","id":"49c15f73-2e73-409f-aaee-a358d5844a01","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"accept-language","value":"en-US","type":"text"}],"url":"https://api.kodelabs.com/kodeos/api/v1/buildings?page=1&limit=50&buildingId=<buildingId>","description":"<p>Returns a list of all buildings associated with the authenticated user's portfolio.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings"],"host":["https://api.kodelabs.com/kodeos"],"query":[{"description":{"content":"<p>The page number to retrieve. The first page is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"description":{"content":"<p>The maximum number of items to include per page. Max is 200.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>The field to sort by in ascending order.</p>\n","type":"text/plain"},"key":"asc","value":"<asc>"},{"disabled":true,"description":{"content":"<p>The field to sort by in descending order. Default is _id.</p>\n","type":"text/plain"},"key":"dsc","value":"<dsc>"},{"description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"key":"buildingId","value":"<buildingId>"}],"variable":[]}},"response":[{"id":"4bac4655-dca2-4c37-8fad-51a03006a056","name":"list buildings","originalRequest":{"method":"GET","header":[{"key":"accept-language","value":"en-US","type":"text"}],"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings?page=1&limit=50&buildingId=<buildingId>","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings"],"query":[{"key":"page","value":"1","description":"The page number to retrieve. The first page is 1."},{"key":"limit","value":"50","description":"The maximum number of items to include per page. Max is 200."},{"key":"asc","value":"<asc>","description":"The field to sort by in ascending order.","disabled":true},{"key":"dsc","value":"<dsc>","description":"The field to sort by in descending order. Default is _id.","disabled":true},{"key":"buildingId","value":"<buildingId>","description":"Id of building"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 06 Mar 2025 10:17:28 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"197"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-content-type-options","value":"nosniff"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91c11a7d8d214d8b-FRA"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"_id\": \"67c960faffaa42223163099e\",\n            \"createdAt\": \"2025-03-06T08:46:50+0000\",\n            \"updatedAt\": \"2025-03-06T10:06:14+0000\",\n            \"address\": {\n                \"address1\": \"1420 Washington Boulevard\",\n                \"address2\": \"\",\n                \"city\": \"Detroit\",\n                \"country\": \"United States\",\n                \"countryAbbr\": \"US\",\n                \"location\": {\n                    \"lat\": 42.334056,\n                    \"lng\": -83.0504911\n                },\n                \"state\": \"Michigan\",\n                \"stateAbbr\": \"MI\",\n                \"zip\": \"48226\"\n            },\n            \"area\": {\n                \"_id\": \"square_foot\",\n                \"unit\": \"ft²\",\n                \"value\": 10000\n            },\n            \"areasCount\": 0,\n            \"devicesCount\": 0,\n            \"name\": \"KODE OS Office\",\n            \"picture\": \"Sites/67c960f7ffaa42223163099c/images.png\",\n            \"pointsCount\": 0,\n            \"primaryFunction\": \"Office\",\n            \"systemsCount\": 0,\n            \"tz\": \"America/Detroit\"\n        }\n    ],\n    \"itemCount\": 1,\n    \"limit\": 2,\n    \"page\": 1,\n    \"pageCount\": 1\n}"}],"_postman_id":"49c15f73-2e73-409f-aaee-a358d5844a01"},{"name":"list building areas","id":"91925133-9141-4458-bdc1-2c791df5ccdc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/areas?page=1&limit=50","description":"<p>Retrieves areas associated with a specific building.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","areas"],"host":["https://api.kodelabs.com/kodeos"],"query":[{"description":{"content":"<p>The page number to retrieve. The first page is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"description":{"content":"<p>The maximum number of items to include per page. Max is 200.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>The field to sort by in ascending order.</p>\n","type":"text/plain"},"key":"asc","value":"<asc>"},{"disabled":true,"description":{"content":"<p>The field to sort by in descending order. Default is _id.</p>\n","type":"text/plain"},"key":"dsc","value":"<dsc>"},{"disabled":true,"description":{"content":"<p>Id of Area</p>\n","type":"text/plain"},"key":"areaId","value":"<areaId>"}],"variable":[{"id":"20c84959-9ce6-4e48-ad9b-75a121a94200","description":{"content":"<p>Id of building to get areas for</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"}]}},"response":[{"id":"28da3900-975f-4e2d-b495-fe60706b613f","name":"list building areas","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/areas?page=1&limit=50","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","areas"],"query":[{"key":"page","value":"1","description":"The page number to retrieve. The first page is 1."},{"key":"limit","value":"50","description":"The maximum number of items to include per page. Max is 200."},{"key":"asc","value":"<asc>","description":"The field to sort by in ascending order.","disabled":true},{"key":"dsc","value":"<dsc>","description":"The field to sort by in descending order. Default is _id.","disabled":true},{"key":"areaId","value":"<areaId>","description":"Id of Area","disabled":true}],"variable":[{"key":"buildingId","value":"<buildingId>","description":"Id of building to get areas for"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 06 Mar 2025 10:18:22 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"197"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-content-type-options","value":"nosniff"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91c11bcf399c4d8b-FRA"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"_id\": \"67c9765b5e947b409ca44a18\",\n            \"createdAt\": \"2025-03-06T10:18:03+0000\",\n            \"updatedAt\": \"2025-03-06T10:18:03+0000\",\n            \"devicesCount\": 0,\n            \"name\": \"Area 1\",\n            \"order\": 0\n        }\n    ],\n    \"itemCount\": 1,\n    \"limit\": 50,\n    \"page\": 1,\n    \"pageCount\": 1\n}"}],"_postman_id":"91925133-9141-4458-bdc1-2c791df5ccdc"}],"id":"a7b96359-32f9-4c85-88d3-2981fdb1a06e","description":"<p>Buildings in KODE OS represent physical structures. Each building can contain multiple floors, datasource, devices and points. The API provides endpoints to retrieve, manage, and integrate building-related data into smart building operations.</p>\n","_postman_id":"a7b96359-32f9-4c85-88d3-2981fdb1a06e","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}}},{"name":"Datasources","item":[{"name":"list datasources for buildings","id":"c30d5efc-b199-4a32-829c-9d971a46870c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources?page=1&limit=50","description":"<p>List datasources for specified building.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources"],"host":["https://api.kodelabs.com/kodeos"],"query":[{"description":{"content":"<p>The page number to retrieve. The first page is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"description":{"content":"<p>The maximum number of items to include per page. Max is 200.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>The field to sort by in ascending order.</p>\n","type":"text/plain"},"key":"asc","value":"<asc>"},{"disabled":true,"description":{"content":"<p>The field to sort by in descending order. Default is _id.</p>\n","type":"text/plain"},"key":"dsc","value":"<dsc>"},{"disabled":true,"description":{"content":"<p>ID of datasource</p>\n","type":"text/plain"},"key":"datasourceId","value":"<datasourceId>"},{"disabled":true,"description":{"content":"<p>Datasource api type </p>\n","type":"text/plain"},"key":"apiType","value":"<apiType>"}],"variable":[{"id":"8cfbe3f0-9c65-4874-a3f6-2da6337ef96f","description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"}]}},"response":[{"id":"313b7fbf-ebdd-420c-b1b3-203df6a099ea","name":"list datasources for buildings","originalRequest":{"method":"GET","header":[],"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources?page=1&limit=50","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources"],"query":[{"key":"page","value":"1","description":"The page number to retrieve. The first page is 1."},{"key":"limit","value":"50","description":"The maximum number of items to include per page. Max is 200."},{"key":"asc","value":"<asc>","description":"The field to sort by in ascending order.","disabled":true},{"key":"dsc","value":"<dsc>","description":"The field to sort by in descending order. Default is _id.","disabled":true},{"key":"datasourceId","value":"<datasourceId>","description":"ID of datasource","disabled":true},{"key":"apiType","value":"<apiType>","description":"Datasource api type ","disabled":true}],"variable":[{"key":"buildingId","value":"<buildingId>","description":"Id of building"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 06 Mar 2025 10:20:08 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"197"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/csp-reporting.cloudflare.com\\/cdn-cgi\\/script_monitor\\/report?m=PBxQtV.F6sWFt4cicKpi4NwPLWaMN2mjNNUYanDv0Ds-1741256408-1.0.1.1-E3y6SIH8eIHuvdvq_EgO86tNG3clHAHjqcdnxyoyhxmi2psoCrBTzNV8QFB6MMGtTbH060Wod2XJS2GUxn7sJgaka5k108xkNJNUH6Y3qVSFJuQUqsI.Gipy74nw1b.L_Dwp8wXNFKFefW682pb5WxP5VWy1OHwNz8qsBdpN6V8\"}],\"group\":\"cf-csp-endpoint\",\"max_age\":86400}"},{"key":"Content-Security-Policy-Report-Only","value":"script-src 'none'; report-uri https://csp-reporting.cloudflare.com/cdn-cgi/script_monitor/report?m=PBxQtV.F6sWFt4cicKpi4NwPLWaMN2mjNNUYanDv0Ds-1741256408-1.0.1.1-E3y6SIH8eIHuvdvq_EgO86tNG3clHAHjqcdnxyoyhxmi2psoCrBTzNV8QFB6MMGtTbH060Wod2XJS2GUxn7sJgaka5k108xkNJNUH6Y3qVSFJuQUqsI.Gipy74nw1b.L_Dwp8wXNFKFefW682pb5WxP5VWy1OHwNz8qsBdpN6V8; report-to cf-csp-endpoint"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91c11e64ec4d1ca1-FRA"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"_id\": \"67c97396a0fceb379fc4ec08\",\n            \"createdAt\": \"2025-03-06T10:06:14+0000\",\n            \"updatedAt\": \"2025-03-06T10:06:14+0000\",\n            \"apiType\": \"API_KODE\",\n            \"building\": {\n                \"_id\": \"67c960faffaa42223163099e\",\n                \"name\": \"KODE OS Office\"\n            },\n            \"name\": \"KODE API\"\n        }\n    ],\n    \"itemCount\": 1,\n    \"limit\": 2,\n    \"page\": 1,\n    \"pageCount\": 1\n}"}],"_postman_id":"c30d5efc-b199-4a32-829c-9d971a46870c"}],"id":"af5a91dc-4735-4f8e-8644-1a71c0433951","description":"<p>Datasources represent integrations with external systems that feed data into KODE OS. These could be IoT platforms, BAS systems, energy meters, or third-party APIs. Datasources allow automated data collection from multiple sources.</p>\n","_postman_id":"af5a91dc-4735-4f8e-8644-1a71c0433951","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}}},{"name":"Devices","item":[{"name":"list devices","id":"e3472045-3832-4c05-a377-2997266929c0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/devices?page=1&limit=50","description":"<p>Retrieves a paginated list of devices associated with buildings accessible to the authenticated service account.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","devices"],"host":["https://api.kodelabs.com/kodeos"],"query":[{"description":{"content":"<p>The page number to retrieve. The first page is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"description":{"content":"<p>The maximum number of items to include per page. Max is 200.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>ID of device</p>\n","type":"text/plain"},"key":"deviceId","value":"<deviceId>"},{"disabled":true,"description":{"content":"<p>ID of area</p>\n","type":"text/plain"},"key":"areaId","value":"<areaId>"},{"disabled":true,"description":{"content":"<p>Ontology canonical type of device</p>\n","type":"text/plain"},"key":"canonicalType","value":"<canonicalType>"}],"variable":[{"id":"5b5ad31e-8378-46f1-91f3-22378a574e14","description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"}]}},"response":[{"id":"e1991aef-6b74-4d70-8b4d-0850728b0e04","name":"list devices","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/devices?page=1&limit=50","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","devices"],"query":[{"key":"page","value":"1","description":"The page number to retrieve. The first page is 1."},{"key":"limit","value":"50","description":"The maximum number of items to include per page. Max is 200."},{"key":"deviceId","value":"<deviceId>","description":"ID of device","disabled":true},{"key":"areaId","value":"<areaId>","description":"ID of area","disabled":true},{"key":"canonicalType","value":"<canonicalType>","description":"Ontology canonical type of device","disabled":true}],"variable":[{"key":"buildingId","value":"<buildingId>","description":"Id of building"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 06 Mar 2025 10:22:46 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"197"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-content-type-options","value":"nosniff"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91c1223ffd371ca1-FRA"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"_id\": \"67c977317437671625264e02\",\n            \"createdAt\": \"2025-03-06T10:21:37+0000\",\n            \"updatedAt\": \"2025-03-06T10:21:37+0000\",\n            \"building\": {\n                \"_id\": \"67c960faffaa42223163099e\",\n                \"name\": \"KODE OS Office\"\n            },\n            \"connector\": {\n                \"_id\": \"67c97396a0fceb379fc4ec08\",\n                \"name\": \"KODE API\",\n                \"type\": \"API_KODE\"\n            },\n            \"name\": \"testDevice\",\n            \"pointsCount\": 1\n        }\n    ],\n    \"itemCount\": 1,\n    \"limit\": 2,\n    \"page\": 1,\n    \"pageCount\": 1\n}"}],"_postman_id":"e3472045-3832-4c05-a377-2997266929c0"},{"name":"create device","id":"b3b0ecf6-7b35-4ee0-86bf-a9e3bf8b48b2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n      \"displayName\": \"testDevice\",\n    \"id\": \"testDevice\",\n    \"name\": \"testDevice\",\n    \"path\": \"string\",\n    \"points\": [\n        {\n            \"kind\": \"Bool\",\n            \"name\": \"testPoint\",\n            \"pointEnum\": [\n                \"testPoint\"\n            ],\n            \"pointId\": \"testPoint\",\n            \"unit\": \"string\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices","description":"<p>Create or update a single device.</p>\n<p>If a device already exists than that device is updated else is created a new device.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"id\": \"device1\",\n    \"name\": \"device1\",\n    \"points\": [\n        {\n            \"kind\": \"Str\",\n            \"name\": \"point1\",\n            \"pointId\": \"point1\",\n        }\n    ]\n}\n\n</code></pre>\n<ul>\n<li><p>displayName (string): Optional. Display name of device</p>\n</li>\n<li><p>id (string): Required. Id of device</p>\n</li>\n<li><p>name (string): Required. Name of Device</p>\n</li>\n<li><p>path (string): Optional.</p>\n</li>\n<li><p>points (array): Required. Array with points for device</p>\n</li>\n<li><p>points.kind (enum): Required. Kind of values for specified points, available values Bool, Str, Number</p>\n</li>\n<li><p>points.name (string): Required. Name of point</p>\n</li>\n<li><p>points.pointId (string): Required. Id of point</p>\n</li>\n<li><p>point.unit (string): Optional. Unit for value of point ???</p>\n</li>\n<li><p>point.enum (array): Optional. Array with possible values for point</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"id":"00abaa89-b503-4878-8f5a-662be18f9873","description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"},{"id":"be204097-a94f-4578-ba10-141a931d048d","description":{"content":"<p>Id of datasource</p>\n","type":"text/plain"},"type":"any","value":"<datasourceId>","key":"datasourceId"}]}},"response":[{"id":"6036aabe-fcf0-408e-9af5-245da90d4192","name":"create device","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"displayName\": \"testDevice\",\n    \"id\": \"testDevice\",\n    \"name\": \"testDevice\",\n    \"path\": \"string\",\n    \"points\": [\n        {\n            \"kind\": \"Bool\",\n            \"name\": \"testPoint\",\n            \"pointEnum\": [\n                \"testPoint\"\n            ],\n            \"pointId\": \"testPoint\",\n            \"unit\": \"string\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices"],"variable":[{"key":"buildingId","value":"<buildingId","description":"Id of building"},{"key":"datasourceId","value":"<datasourceId>","description":"Id of datasource"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 05 Mar 2025 08:58:17 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"31"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"995"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91b8691cfa54d100-SOF"}],"cookie":[],"responseTime":null,"body":"{\n    \"deviceSize\": 1,\n    \"pointsSize\": 1\n}"}],"_postman_id":"b3b0ecf6-7b35-4ee0-86bf-a9e3bf8b48b2"},{"name":"create devices batch","id":"eaafac8c-7df5-4b3a-b6ff-0dfa54069ec1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"devices\": [\n        {\n            \"displayName\": \"string\",\n            \"id\": \"string\",\n            \"name\": \"string\",\n            \"path\": \"string\",\n            \"points\": [\n                {\n                    \"kind\": \"Bool\",\n                    \"name\": \"string\",\n                    \"pointEnum\": [\n                        \"string\"\n                    ],\n                    \"pointId\": \"string\",\n                    \"unit\": \"string\"\n                }\n            ]\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices/batch","description":"<p>Batch create or update of devices.</p>\n<p>If matching deviceId and pointId are found updates are performed, otherwise items are inserted as new records.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"devices\": [\n        {\n            \"displayName\": \"string\",\n            \"id\": \"string\",\n            \"name\": \"string\",\n            \"path\": \"string\",\n            \"points\": [\n                {\n                    \"kind\": \"Bool\",\n                    \"name\": \"string\",\n                    \"pointEnum\": [\n                        \"string\"\n                    ],\n                    \"pointId\": \"string\",\n                    \"unit\": \"string\"\n                }\n            ]\n        }\n    ]\n}\n\n</code></pre>\n<p>Fields description:</p>\n<ul>\n<li><p>devices (array): Required. Array of devices with points to be created or updated.</p>\n</li>\n<li><p>devices.displayName (string): Optional. Display name of device</p>\n</li>\n<li><p>devices.id (string): Required. Id of device</p>\n</li>\n<li><p>devices.name (string): Required. Name of Device</p>\n</li>\n<li><p>devices.path (string): Optional.</p>\n</li>\n<li><p>devices.points (array): Required. Array with points for device</p>\n</li>\n<li><p>devices.points.kind (enum): Required. Kind of values for specified points, available values Bool, Str, Number</p>\n</li>\n<li><p>devices.points.name (string): Required. Name of point</p>\n</li>\n<li><p>devices.points.pointId (string): Required. Id of point</p>\n</li>\n<li><p>devices.point.unit (string): Optional. Unit for value of point ???</p>\n</li>\n<li><p>devices.point.enum (array): Optional. Array with possible values for point</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices","batch"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"id":"20193038-e32c-40dd-a2fd-4c6115d1e213","description":{"content":"<p>Id of Building</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"},{"id":"6a013fb4-9cbe-4166-b002-d94217dafeca","description":{"content":"<p>Id of Datasource</p>\n","type":"text/plain"},"type":"any","value":"<datasourceId>","key":"datasourceId"}]}},"response":[{"id":"f56ed7c4-896b-43d7-b249-c1f024a5294c","name":"create devices batch","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"devices\": [\n        {\n            \"displayName\": \"string\",\n            \"id\": \"string\",\n            \"name\": \"string\",\n            \"path\": \"string\",\n            \"points\": [\n                {\n                    \"kind\": \"Bool\",\n                    \"name\": \"string\",\n                    \"pointEnum\": [\n                        \"string\"\n                    ],\n                    \"pointId\": \"string\",\n                    \"unit\": \"string\"\n                }\n            ]\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.kodelabs.com/kodeos/integrations/api/v1/buildings/:buildingId/datasources/:datasourceId/devices/batch","host":["https://api.kodelabs.com/kodeos"],"path":["integrations","api","v1","buildings",":buildingId","datasources",":datasourceId","devices","batch"],"variable":[{"key":"buildingId","value":"<buildingId>","description":"Id of Building"},{"key":"datasourceId","value":"<datasourceId>","description":"Id of Datasource"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 24 Feb 2025 23:40:10 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"31"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91734c8d28c6d0e2-SOF"}],"cookie":[],"responseTime":null,"body":"{\n    \"deviceSize\": 1,\n    \"pointsSize\": 1\n}"}],"_postman_id":"eaafac8c-7df5-4b3a-b6ff-0dfa54069ec1"}],"id":"d3539e32-728d-4c9d-aef4-90952b94e146","description":"<p>Devices in KODE OS are hardware units installed in a building for monitoring and control. Devices can include HVAC units, IoT sensors, meters, controllers and more. The API allows retrieval of real-time device data as well as configurations.</p>\n","_postman_id":"d3539e32-728d-4c9d-aef4-90952b94e146","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}}},{"name":"Points","item":[{"name":"list building points","id":"a2f63f55-94ab-4fc3-9d17-79a71153a325","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/points?page=1&limit=50","description":"<p>Get points based on buildingId or deviceId</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","points"],"host":["https://api.kodelabs.com/kodeos"],"query":[{"description":{"content":"<p>The page number to retrieve. The first page is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"description":{"content":"<p>The maximum number of items to include per page. Max is 200.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>The field to sort by in ascending order.</p>\n","type":"text/plain"},"key":"asc","value":"<asc>"},{"disabled":true,"description":{"content":"<p>The field to sort by in descending order.</p>\n","type":"text/plain"},"key":"dsc","value":"<dsc>"},{"disabled":true,"description":{"content":"<p>Status of point. Possible values: ok,down,disable,fault,all</p>\n","type":"text/plain"},"key":"status","value":"<status>"},{"disabled":true,"description":{"content":"<p>Id of device</p>\n","type":"text/plain"},"key":"deviceId","value":"{{deviceIdMongo}}"},{"disabled":true,"description":{"content":"<p>Id of point</p>\n","type":"text/plain"},"key":"pointId","value":"{{pointIdMongo}}"},{"disabled":true,"description":{"content":"<p>Id of area</p>\n","type":"text/plain"},"key":"areaId","value":"<areaId>"},{"disabled":true,"description":{"content":"<p>Filter based on point ontology field</p>\n","type":"text/plain"},"key":"field","value":"<field>"},{"disabled":true,"description":{"content":"<p>Filter based on ontology canonical type</p>\n","type":"text/plain"},"key":"canonicalType","value":"<canonicalType>"}],"variable":[{"id":"17e8f589-87c5-4230-b693-124f2189ebfa","description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"buildingId","key":"buildingId"}]}},"response":[{"id":"ba5c0421-a7e8-44b1-b2d5-3242a574f59b","name":"list building points","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/points?page=1&limit=50","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","points"],"query":[{"key":"page","value":"1","description":"The page number to retrieve. The first page is 1."},{"key":"limit","value":"50","description":"The maximum number of items to include per page. Max is 200."},{"key":"asc","value":"<asc>","description":"The field to sort by in ascending order.","disabled":true},{"key":"dsc","value":"<dsc>","description":"The field to sort by in descending order.","disabled":true},{"key":"status","value":"<status>","description":"Status of point. Possible values: ok,down,disable,fault,all","disabled":true},{"key":"deviceId","value":"<deviceId>","description":"Id of device","disabled":true},{"key":"pointId","value":"<pointId>","description":"Id of point","disabled":true},{"key":"areaId","value":"<areaId>","description":"Id of area","disabled":true},{"key":"field","value":"<field>","description":"Filter based on point ontology field","disabled":true},{"key":"canonicalType","value":"<canonicalType>","description":"Filter based on ontology canonical type","disabled":true}],"variable":[{"key":"buildingId","value":"<buildingId>","description":"Id of building"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 06 Mar 2025 10:55:12 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"197"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-content-type-options","value":"nosniff"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91c151c1dd276907-FRA"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"_id\": \"67c977317437671625264e05\",\n            \"createdAt\": \"2025-03-06T10:21:37+0000\",\n            \"updatedAt\": \"2025-03-06T10:21:37+0000\",\n            \"baseDevice\": {\n                \"_id\": \"67c977317437671625264e02\",\n                \"name\": \"testDevice\"\n            },\n            \"building\": {\n                \"_id\": \"67c960faffaa42223163099e\",\n                \"name\": \"KODE OS Office\"\n            },\n            \"connector\": {\n                \"_id\": \"67c97396a0fceb379fc4ec08\",\n                \"name\": \"KODE API\",\n                \"type\": \"API_KODE\"\n            },\n            \"device\": {\n                \"_id\": \"67c977317437671625264e02\",\n                \"name\": \"testDevice\"\n            },\n            \"deviceId\": \"67c977317437671625264e02\",\n            \"kind\": \"Bool\",\n            \"name\": \"testPoint\",\n            \"pointEnum\": [\n                \"testPoint\"\n            ],\n            \"writable\": false,\n            \"sourceId\": \"testDevice\"\n        }\n    ],\n    \"itemCount\": 1,\n    \"limit\": 2,\n    \"page\": 1,\n    \"pageCount\": 1\n}"}],"_postman_id":"a2f63f55-94ab-4fc3-9d17-79a71153a325"},{"name":"query building points","id":"b2055598-6c82-4d3f-bab0-f9ffef06b588","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"pointIds\": [\n        \"point_id_1\",\n        \"point_id_2\"\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/points/query?page=1&limit=50","description":"<p>Query points for a building. Use this endpoint when querying points with their ids.</p>\n<p>This endpoint accepts pointIds as an array, the maximum number pointIds is 200. If more than 200 points are needed at once, you need to get them with multiple requests and then merge them into an array containing all points.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","points","query"],"host":["https://api.kodelabs.com/kodeos"],"query":[{"description":{"content":"<p>The page number to retrieve. The first page is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"description":{"content":"<p>The maximum number of items to include per page. Max is 200.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"disabled":true,"description":{"content":"<p>The field to sort by in ascending order.</p>\n","type":"text/plain"},"key":"asc","value":"<asc>"},{"disabled":true,"description":{"content":"<p>The field to sort by in descending order.</p>\n","type":"text/plain"},"key":"dsc","value":"<dsc>"},{"disabled":true,"description":{"content":"<p>Status of point. Possible values: ok,down,disable,fault,all</p>\n","type":"text/plain"},"key":"status","value":"<status>"},{"disabled":true,"description":{"content":"<p>Id of device</p>\n","type":"text/plain"},"key":"deviceId","value":"{{deviceIdMongo}}"},{"disabled":true,"description":{"content":"<p>Id of point</p>\n","type":"text/plain"},"key":"pointId","value":"{{pointIdMongo}}"},{"disabled":true,"description":{"content":"<p>Id of area</p>\n","type":"text/plain"},"key":"areaId","value":"<areaId>"},{"disabled":true,"description":{"content":"<p>Filter based on point ontology field</p>\n","type":"text/plain"},"key":"field","value":"<field>"},{"disabled":true,"description":{"content":"<p>Filter based on ontology canonical type</p>\n","type":"text/plain"},"key":"canonicalType","value":"<canonicalType>"}],"variable":[{"description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"buildingId","key":"buildingId"}]}},"response":[{"id":"18876d2b-f645-4470-8e59-ee13a8d13ff5","name":"query building points","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"pointIds\": [\n        \"67c977317437671625264e05\"\n    ] \n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/points/query?page=1&limit=50","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","points","query"],"query":[{"key":"page","value":"1","description":"The page number to retrieve. The first page is 1."},{"key":"limit","value":"50","description":"The maximum number of items to include per page. Max is 200."},{"key":"asc","value":"<asc>","description":"The field to sort by in ascending order.","disabled":true},{"key":"dsc","value":"<dsc>","description":"The field to sort by in descending order.","disabled":true},{"key":"status","value":"<status>","description":"Status of point. Possible values: ok,down,disable,fault,all","disabled":true},{"key":"deviceId","value":"<deviceId>","description":"Id of device","disabled":true},{"key":"pointId","value":"<pointId>","description":"Id of point","disabled":true},{"key":"areaId","value":"<areaId>","description":"Id of area","disabled":true},{"key":"field","value":"<field>","description":"Filter based on point ontology field","disabled":true},{"key":"canonicalType","value":"<canonicalType>","description":"Filter based on ontology canonical type","disabled":true}],"variable":[{"key":"buildingId","value":"<buildingId>","description":"Id of building"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 06 Mar 2025 10:55:12 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"197"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-content-type-options","value":"nosniff"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91c151c1dd276907-FRA"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"_id\": \"67c977317437671625264e05\",\n            \"createdAt\": \"2025-03-06T10:21:37+0000\",\n            \"updatedAt\": \"2025-03-06T10:21:37+0000\",\n            \"baseDevice\": {\n                \"_id\": \"67c977317437671625264e02\",\n                \"name\": \"testDevice\"\n            },\n            \"building\": {\n                \"_id\": \"67c960faffaa42223163099e\",\n                \"name\": \"KODE OS Office\"\n            },\n            \"connector\": {\n                \"_id\": \"67c97396a0fceb379fc4ec08\",\n                \"name\": \"KODE API\",\n                \"type\": \"API_KODE\"\n            },\n            \"device\": {\n                \"_id\": \"67c977317437671625264e02\",\n                \"name\": \"testDevice\"\n            },\n            \"deviceId\": \"67c977317437671625264e02\",\n            \"kind\": \"Bool\",\n            \"name\": \"testPoint\",\n            \"pointEnum\": [\n                \"testPoint\"\n            ],\n            \"writable\": false,\n            \"sourceId\": \"testDevice\"\n        }\n    ],\n    \"itemCount\": 1,\n    \"limit\": 2,\n    \"page\": 1,\n    \"pageCount\": 1\n}"}],"_postman_id":"b2055598-6c82-4d3f-bab0-f9ffef06b588"},{"name":"list point write fields","id":"e8d39671-27d7-444d-9de2-465619860cba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices/:deviceId/points/:pointId/fields","description":"<p>Get metadata about point write action. Use this api to get metadata of how to build payload to write on specific point.</p>\n<p>Field Description:</p>\n<ul>\n<li><p>identifier: name of field</p>\n</li>\n<li><p>metadata: metadata for field requirement and filter (mandatory, optional or conditional)</p>\n</li>\n<li><p>medatadata.required: denotes if field is required (MANDATORY), optional (OPTIONAL) or conditional (CONDITIONAL) which is defiend based on field metadata.filter.</p>\n</li>\n<li><p>inputType: input type per field (text_box, checkbox, number etc)</p>\n</li>\n<li><p>dataType: data type that Field accepts</p>\n</li>\n<li><p>options: options a field value can have</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices",":deviceId","points",":pointId","fields"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"id":"522bf6e5-f3ec-4fb2-a407-82a718c02c25","description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"},{"id":"0b812376-4ee8-4455-8ca9-4adaebc0354d","description":{"content":"<p>Id of datasrouce</p>\n","type":"text/plain"},"type":"any","value":"<datasourceId>","key":"datasourceId"},{"id":"b2b8af67-9c23-4707-a7c0-71496994d258","description":{"content":"<p>Id of device</p>\n","type":"text/plain"},"type":"any","value":"<deviceId>","key":"deviceId"},{"id":"2002289a-bab1-4fe1-bee6-40690ad111ef","description":{"content":"<p>Id of point</p>\n","type":"text/plain"},"type":"any","value":"<pointId>","key":"pointId"}]}},"response":[{"id":"f4776f57-935c-4f4a-9364-048b47589025","name":"list point write actions","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices/:deviceId/points/:pointId/fields","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices",":deviceId","points",":pointId","fields"],"variable":[{"key":"buildingId","value":"<buildingId>"},{"key":"datasourceId","value":"<datasourceId>"},{"key":"deviceId","value":"<deviceId>"},{"key":"pointId","value":"<pointId>"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Tue, 25 Feb 2025 07:08:13 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"9175dcdcbb20d0ca-SOF"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"dataType\": \"STRING\",\n        \"defaultValue\": \"override\",\n        \"displayName\": \"Priority\",\n        \"identifier\": \"priority\",\n        \"inputType\": \"DROP_DOWN\",\n        \"metadata\": {\n            \"isDisabled\": false,\n            \"isHidden\": false,\n            \"required\": \"MANDATORY\",\n            \"uniqueForRow\": false,\n            \"updateAble\": false\n        },\n        \"name\": \"priority\",\n        \"options\": [\n            {\n                \"_id\": \"override\",\n                \"name\": \"Override\"\n            },\n            {\n                \"_id\": \"auto\",\n                \"name\": \"Auto\"\n            },\n            {\n                \"_id\": \"set\",\n                \"name\": \"Set\"\n            },\n            {\n                \"_id\": \"release\",\n                \"name\": \"Release\"\n            }\n        ],\n        \"order\": 1\n    },\n    {\n        \"displayName\": \"Value\",\n        \"identifier\": \"value\",\n        \"inputType\": \"NUMBER\",\n        \"metadata\": {\n            \"filter\": {\n                \"conjunction\": \"AND\",\n                \"filterSet\": [\n                    {\n                        \"fieldName\": \"priority\",\n                        \"operator\": \"IN\",\n                        \"value\": [\n                            \"override\",\n                            \"set_16\",\n                            \"set\",\n                            \"ftt\"\n                        ]\n                    }\n                ]\n            },\n            \"isDisabled\": false,\n            \"isHidden\": false,\n            \"required\": \"CONDITIONAL\",\n            \"uniqueForRow\": false,\n            \"updateAble\": false\n        },\n        \"name\": \"value\",\n        \"order\": 1\n    },\n    {\n        \"displayName\": \"Duration\",\n        \"identifier\": \"duration\",\n        \"inputType\": \"DURATION\",\n        \"metadata\": {\n            \"filter\": {\n                \"conjunction\": \"AND\",\n                \"filterSet\": [\n                    {\n                        \"fieldName\": \"priority\",\n                        \"operator\": \"IN\",\n                        \"value\": [\n                            \"override\",\n                            \"ftt\",\n                            \"active\",\n                            \"inactive\"\n                        ]\n                    }\n                ]\n            },\n            \"isDisabled\": false,\n            \"isHidden\": false,\n            \"required\": \"CONDITIONAL\",\n            \"uniqueForRow\": false,\n            \"updateAble\": false\n        },\n        \"name\": \"duration\",\n        \"options\": [\n            {\n                \"_id\": \"-1\",\n                \"name\": \"Permanent\"\n            },\n            {\n                \"_id\": \"1800000\",\n                \"name\": \"30 Minutes\"\n            },\n            {\n                \"_id\": \"3600000\",\n                \"name\": \"1 Hour\"\n            },\n            {\n                \"_id\": \"14400000\",\n                \"name\": \"4 Hours\"\n            },\n            {\n                \"_id\": \"28800000\",\n                \"name\": \"8 Hours\"\n            },\n            {\n                \"_id\": \"Custom\",\n                \"name\": \"Custom\"\n            }\n        ],\n        \"order\": 2\n    }\n]"}],"_postman_id":"e8d39671-27d7-444d-9de2-465619860cba"},{"name":"write on point","id":"fd59b901-1459-4fbb-b6b6-fae3e30059a8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"actions\": [\n        {\n            \"id\": \"priority\",\n            \"value\": \"override\"\n        },\n        {\n            \"id\": \"duration\",\n            \"value\": \"-1\"\n        },\n        {\n            \"id\": \"value\",\n            \"value\": 75\n        }\n    ],\n    \"notes\": \"Update from workflow\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices/:deviceId/points/:pointId/write","description":"<p>Firstly get point write field</p>\n<p>then create action request based on response from writeAction endpoint.<br />Each object on response array from writeaction endpoint represents a field that should be sent as action in this endpoint.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"actions\": [\n        {\n            \"id\": \"priority\",\n            \"value\": \"override\"\n        },\n        {\n            \"id\": \"duration\",\n            \"value\": \"-1\"\n        },\n        {\n            \"id\": \"value\",\n            \"value\": 75\n        }\n    ],\n    \"notes\": \"Update api\"\n}\n\n</code></pre>\n<p>Field Descriptions:</p>\n<ul>\n<li><p>actions (array): Required. Array with fields build based on metadata obtained from other endpoint.</p>\n</li>\n<li><p>actions.id (string): Required. Identifier of field we want to modify.</p>\n</li>\n<li><p>actions.value (dynamic): Required. Value of field, datatype is based on metadata from point metadata.</p>\n</li>\n<li><p>notes (string): Optional. Note of update.</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices",":deviceId","points",":pointId","write"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"type":"any","value":"<buildingId>","key":"buildingId"},{"type":"any","value":"<datasourceId>","key":"datasourceId"},{"type":"any","value":"<deviceId>","key":"deviceId"},{"type":"any","value":"<pointId>","key":"pointId"}]}},"response":[{"id":"3cc7d1e1-cc91-4e11-9986-5e436eb729d7","name":"write on point","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"actions\": [\n        {\n            \"id\": \"priority\",\n            \"value\": \"override\"\n        },\n        {\n            \"id\": \"duration\",\n            \"value\": \"-1\"\n        },\n        {\n            \"id\": \"value\",\n            \"value\": 75\n        }\n    ],\n    \"notes\": \"Update from workflow\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices/:deviceId/points/:pointId/write","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices",":deviceId","points",":pointId","write"],"variable":[{"key":"buildingId","value":"<buildingId>"},{"key":"datasourceId","value":"<datasourceId>"},{"key":"deviceId","value":"<deviceId>"},{"key":"pointId","value":"<pointId>"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 05 Mar 2025 09:01:50 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"990"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91b86e498be00c6b-SOF"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"type\": \"TABLE\",\n    \"value\": {\n        \"headers\": [\n            {\n                \"key\": \"level\",\n                \"order\": 1,\n                \"value\": \"Level\"\n            },\n            {\n                \"key\": \"val\",\n                \"order\": 2,\n                \"value\": \"Current Value\"\n            }\n        ],\n        \"values\": [\n            {\n                \"val\": \"75.0\",\n                \"level\": 8\n            },\n            {\n                \"val\": \"60.74646451612902\",\n                \"level\": 10\n            }\n        ]\n    }\n}"}],"_postman_id":"fd59b901-1459-4fbb-b6b6-fae3e30059a8"},{"name":"points batch write","id":"e00dad3f-3c4d-40a7-870c-bc4254b4d50b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"pointWriteActions\": [\n        {\n            \"id\":\"pointId\",\n            \"actions\": [\n                {\n                    \"id\": \"priority\",\n                    \"value\": \"override\"\n                },\n                {\n                    \"id\": \"duration\",\n                    \"value\": \"-1\"\n                },\n                {\n                    \"id\": \"value\",\n                    \"value\": 75\n                }\n            ],\n            \"notes\": \"Update from workflow\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/points/batch-write","description":"<p>First, retrieve the point write fields from the \"list point write fields\" endpoint. Then, construct the batch write point request based on the response from the <code>list point write fields</code> endpoint. Each item in the <code>pointWriteActions</code> array represents a write action for a point, built using the fields provided in the response from the <code>list point write fields</code> endpoint.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"pointWriteActions\": [\n        {\n            \"id\": \"pointId1\",\n            \"actions\": [\n                {\n                    \"id\": \"priority\",\n                    \"value\": \"override\"\n                },\n                {\n                    \"id\": \"duration\",\n                    \"value\": \"-1\"\n                },\n                {\n                    \"id\": \"value\",\n                    \"value\": 75\n                }\n            ],\n            \"notes\": \"Write point from workflow\",\n            \"reason\": \"Write point from workflow\"\n        },\n        {\n            \"id\": \"pointId2\",\n            \"actions\": [\n                {\n                    \"id\": \"priority\",\n                    \"value\": \"set\"\n                },\n                {\n                    \"id\": \"value\",\n                    \"value\": false\n                }\n            ],\n            \"notes\": \"Write point from workflow\",\n            \"reason\": \"Write point from workflow\"\n        }\n    ]\n}\n\n</code></pre>\n<p>Field Descriptions:</p>\n<ul>\n<li><p>pointWriteActions(array): Required. A list of objects representing write actions for points.</p>\n</li>\n<li><p>id (string): Required. Id of point to write to.</p>\n</li>\n<li><p>actions (array): Required. Array with fields build based on metadata obtained from other endpoint.</p>\n</li>\n<li><p>actions.id (string): Required. Identifier of field we want to modify.</p>\n</li>\n<li><p>actions.value (dynamic): Required. Value of field, datatype is based on metadata from point metadata.</p>\n</li>\n<li><p>notes (string): Optional. Note of update.</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","points","batch-write"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"type":"any","value":"<buildingId>","key":"buildingId"},{"type":"any","value":"<datasourceId>","key":"datasourceId"}]}},"response":[{"id":"e91fedbb-94ae-4889-8355-e58841420c9d","name":"write on point","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"pointWriteActions\": [\n        {\n            \"id\":\"pointId\",\n            \"actions\": [\n                {\n                    \"id\": \"priority\",\n                    \"value\": \"override\"\n                },\n                {\n                    \"id\": \"duration\",\n                    \"value\": \"-1\"\n                },\n                {\n                    \"id\": \"value\",\n                    \"value\": 75\n                }\n            ],\n            \"notes\": \"Update from workflow\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/points/batch-write","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","points","batch-write"],"variable":[{"key":"buildingId","value":"<buildingId>"},{"key":"datasourceId","value":"<datasourceId>"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 05 Mar 2025 09:01:50 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"990"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91b86e498be00c6b-SOF"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"failureCount\": 0,\n    \"successCount\": 1\n}"}],"_postman_id":"e00dad3f-3c4d-40a7-870c-bc4254b4d50b"}],"id":"f153c59f-3272-4550-a2fa-b8716cc247c9","description":"<p>Points are individual data elements or control actions associated with a device. They can be:</p>\n<ul>\n<li><p>Data Points: Sensor readings (e.g., temperature, humidity).</p>\n</li>\n<li><p>Control Points: Commands (e.g., turning a fan on/off).</p>\n</li>\n</ul>\n","_postman_id":"f153c59f-3272-4550-a2fa-b8716cc247c9","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}}},{"name":"Timeseries","item":[{"name":"list building point timeseries","id":"5f5852ab-70bb-4563-936d-cea4ce7fc8ba","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/timeseries?page=1&limit=50&from=<from>&to=<to>&deviceId=<deviceId>&pointId=<pointId>","description":"<p>Get timeseries data for building based on filters.</p>\n<p>From - To should be within 2 days</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","timeseries"],"host":["https://api.kodelabs.com/kodeos"],"query":[{"description":{"content":"<p>The page number to retrieve. The first page is 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"description":{"content":"<p>The maximum number of items to include per page. Max is 200 items.</p>\n","type":"text/plain"},"key":"limit","value":"50"},{"description":{"content":"<p>From time to get timeseries: yyyy-MM-dd'T'HH:mm:ssZ (UTC format)</p>\n","type":"text/plain"},"key":"from","value":"<from>"},{"description":{"content":"<p>Date To: yyyy-MM-dd'T'HH:mm:ssZ (UTC format). Difference between From and To must be within 30 days.</p>\n","type":"text/plain"},"key":"to","value":"<to>"},{"description":{"content":"<p>Array of device Ids to filter timeseries for.</p>\n","type":"text/plain"},"key":"deviceId","value":"<deviceId>"},{"description":{"content":"<p>Array of point Ids to filter timeseries for.</p>\n","type":"text/plain"},"key":"pointId","value":"<pointId>"},{"disabled":true,"description":{"content":"<p>Ontology field of point to filter timeseries for.</p>\n","type":"text/plain"},"key":"field","value":"<field>"}],"variable":[{"description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"}]}},"response":[{"id":"da037061-82e7-48cf-9a9b-da4108ae2117","name":"list building point timeseries","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/timeseries?page=1&limit=50&from=<from>&to=<to>&deviceId=<deviceId>&pointId=<pointId>","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","timeseries"],"query":[{"key":"page","value":"1","description":"The page number to retrieve. The first page is 1."},{"key":"limit","value":"50","description":"The maximum number of items to include per page. Max is 200 items."},{"key":"from","value":"<from>","description":"From time to get timeseries: yyyy-MM-dd'T'HH:mm:ssZ"},{"key":"to","value":"<to>","description":"Date To: yyyy-MM-dd'T'HH:mm:ssZ. Difference between From and To must be within 30 days."},{"key":"deviceId","value":"<deviceId>","description":"Array of device Ids to filter timeseries for."},{"key":"pointId","value":"<pointId>","description":"Array of point Ids to filter timeseries for."},{"key":"field","value":"<field>","description":"Ontology field of point to filter timeseries for.","disabled":true}],"variable":[{"key":"buildingId","value":"<buildingId>","description":"Id of building"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 05 Mar 2025 13:59:33 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"994"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-content-type-options","value":"nosniff"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91ba2271fe65d103-SOF"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [],\n    \"itemCount\": 0,\n    \"limit\": 0,\n    \"page\": 1,\n    \"pageCount\": 0\n}"}],"_postman_id":"5f5852ab-70bb-4563-936d-cea4ce7fc8ba"},{"name":"list building last point timeseries","id":"ef1f80a0-fb70-4bf1-a6e9-3938c848805f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/timeseries/last?pointId=<pointId>","description":"<p>Get the latest (most recent) timeseries value for one or more points in a given building.</p>\n<p>Max 200 pointId params per request. Only points that belong to <code>buildingId</code> are returned.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","timeseries","last"],"host":["https://api.kodelabs.com/kodeos"],"query":[{"description":{"content":"<p>Array of point Ids to filter timeseries for. Format should be ?pointId=&amp;pointId=</p>\n","type":"text/plain"},"key":"pointId","value":"<pointId>"}],"variable":[{"description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"}]}},"response":[{"id":"cc494b5c-befb-4892-9afa-0ab71bb99368","name":"list building point timeseries","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/timeseries/last?pointId=<pointId>","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","timeseries","last"],"query":[{"key":"pointId","value":"<pointId>","description":"Array of point Ids to filter timeseries for."},{"key":"field","value":"<field>","description":"Ontology field of point to filter timeseries for.","disabled":true}],"variable":[{"key":"buildingId","value":"<buildingId>","description":"Id of building"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 05 Mar 2025 13:59:33 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"994"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-content-type-options","value":"nosniff"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91ba2271fe65d103-SOF"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": [\n        {\n            \"curState\": [\"curState\"],\n            \"curStatus\": \"curStatus\",\n            \"dateTime\": \"dateTime\",\n            \"id\": \"id\",\n            \"value\": \"value\"\n        }\n    ]\n}"}],"_postman_id":"ef1f80a0-fb70-4bf1-a6e9-3938c848805f"},{"name":"create timeseries for datasource","id":"480f68fd-04a9-4451-ab67-9bc5eadc9383","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"data\": [\n        {\n            \"deviceId\": \"string\",\n            \"points\": [\n                {\n                    \"id\": \"string\",\n                    \"status\": \"disabled\",\n                    \"timestamp\": 0,\n                    \"value\": \"string\"\n                }\n            ]\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/timeseries","description":"<p>Create device and points timeseries for KODE API datasource type!</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"data\": [\n        {\n            \"deviceId\": \"string\",\n            \"points\": [\n                {\n                    \"id\": \"string\",\n                    \"status\": \"disabled\",\n                    \"timestamp\": 0,\n                    \"value\": \"string\"\n                }\n            ]\n        }\n    ]\n}\n\n</code></pre>\n<p>Field Description:</p>\n<ul>\n<li><p>data (array): Required. Array of objects with device and point info to create timeseries for.</p>\n</li>\n<li><p>data.deviceId (string): Required. Id of device for which we want to create timeseries.</p>\n</li>\n<li><p>device.points (array): Required. Array of timeseries for specified points</p>\n</li>\n<li><p>device.points.id (string): Required. Id of point for which we are writing timeserie.</p>\n</li>\n<li><p>device.points.status (enum): Optional. Status of point. Possible values: ok,disabled,fault,down,no_value.</p>\n</li>\n<li><p>device.points.timestamp (long): Required. Time for timeserie from unix time. 0 means current time.</p>\n</li>\n<li><p>device.points.value (string): Optional. Value of point we are writing.</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","timeseries"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"id":"622bfe68-2b91-47ac-be5f-a8bd5ebb3f1d","description":{"content":"<ul>\n<li>Id of building</li>\n</ul>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"},{"id":"9fb2d831-00e1-4365-9189-0e07cbd95ea5","description":{"content":"<ul>\n<li>Id of datasource</li>\n</ul>\n","type":"text/plain"},"type":"any","value":"<datasourceId>","key":"datasourceId"}]}},"response":[{"id":"a0fef561-20ed-4df8-a5a6-2a842d014f64","name":"create timeseries for datasource","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"data\": [\n        {\n            \"deviceId\": \"string\",\n            \"points\": [\n                {\n                    \"id\": \"string\",\n                    \"status\": \"disabled\",\n                    \"timestamp\": 0,\n                    \"value\": \"string\"\n                }\n            ]\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/timeseries","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","timeseries"],"variable":[{"key":"buildingId","value":"<buildingId>","description":"* Id of building"},{"key":"datasourceId","value":"<datasourceId>","description":"* Id of datasource"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 06 Mar 2025 15:26:10 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"30"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"195"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Report-To","value":"{\"endpoints\":[{\"url\":\"https:\\/\\/csp-reporting.cloudflare.com\\/cdn-cgi\\/script_monitor\\/report?m=LKk5t7xyWewnipC36qIp1oXeutrYZMpMnJN24gyiQDs-1741274770-1.0.1.1-_FXCllkHvQO_gQhbRIqrBSRgE7kPYpXVniEVyuqj0AOxvclurm_3IrxSIHdU02Sj3qdfbQ2uaz2le6RfQrfDTl7.jnBBP1zork6KN2c8NJ0JtBvHak.8npwp4N7Ag2V62ni7AWXtM3B3WCnjK0LKd9AWkoURx44OR8VChex8iYA\"}],\"group\":\"cf-csp-endpoint\",\"max_age\":86400}"},{"key":"Content-Security-Policy-Report-Only","value":"script-src 'none'; report-uri https://csp-reporting.cloudflare.com/cdn-cgi/script_monitor/report?m=LKk5t7xyWewnipC36qIp1oXeutrYZMpMnJN24gyiQDs-1741274770-1.0.1.1-_FXCllkHvQO_gQhbRIqrBSRgE7kPYpXVniEVyuqj0AOxvclurm_3IrxSIHdU02Sj3qdfbQ2uaz2le6RfQrfDTl7.jnBBP1zork6KN2c8NJ0JtBvHak.8npwp4N7Ag2V62ni7AWXtM3B3WCnjK0LKd9AWkoURx44OR8VChex8iYA; report-to cf-csp-endpoint"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91c2deae0f94d0cf-SOF"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"OK\",\n    \"status\": \"OK\"\n}"}],"_postman_id":"480f68fd-04a9-4451-ab67-9bc5eadc9383"},{"name":"create point timeseries for device","id":"c7c2fc30-334d-4bd7-8821-29891c6803f6","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n    {\n        \"id\": \"string\",\n        \"status\": \"ok\",\n        \"timestamp\": 0,\n        \"value\": 70\n    },\n    {\n        \"id\": \"string\",\n        \"status\": \"ok\",\n        \"timestamp\": 0,\n        \"value\": 50\n    }\n]","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices/:deviceId/timeseries","description":"<p>Create device and points timeseries for KODE API datasource type!<br />Use this endpoint to reduce payload size if device has to many points</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n    {\n        \"id\": \"string\",\n        \"status\": \"disabled\",\n        \"timestamp\": 0,\n        \"value\": \"string\"\n    }\n]\n\n</code></pre>\n<p>Field Description:</p>\n<ul>\n<li><p>id (string): Required. Id of point for which we are writing timeserie.</p>\n</li>\n<li><p>status (enum): Optional. Status of point. Possible values: ok,disabled,fault,down,no_value.</p>\n</li>\n<li><p>timestamp (long): Required. Time for timeserie from unix time. 0 means current time.</p>\n</li>\n<li><p>value (string): Optional. Value of point we are writing.</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices",":deviceId","timeseries"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"id":"890b6b50-ed24-4a7e-9729-15626397a030","type":"any","value":"<buildingId>","key":"buildingId"},{"id":"438d286a-706e-41b8-b50b-e37edd7f0538","type":"any","value":"<datasourceId>","key":"datasourceId"},{"id":"2545ab32-c092-4f99-8b44-60ac9309e3a2","type":"any","value":"<deviceId>","key":"deviceId"}]}},"response":[{"id":"7d6fc6cc-0456-4a14-93fb-67de8b95da7e","name":"create point timeseries for device","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n    {\n        \"id\": \"string\",\n        \"status\": \"ok\",\n        \"timestamp\": 0,\n        \"value\": 70\n    },\n    {\n        \"id\": \"string\",\n        \"status\": \"ok\",\n        \"timestamp\": 0,\n        \"value\": 50\n    }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices/:deviceId/timeseries","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices",":deviceId","timeseries"],"variable":[{"key":"buildingId","value":"<buildingId>"},{"key":"datasourceId","value":"<datasourceId>"},{"key":"deviceId","value":"<deviceId>"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 05 Mar 2025 09:06:03 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"30"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"990"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91b87480bb78d0e4-SOF"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"OK\",\n    \"status\": \"OK\"\n}"}],"_postman_id":"c7c2fc30-334d-4bd7-8821-29891c6803f6"},{"name":"create historical data for point","id":"7294d7a7-31d3-49d0-afe3-0dab1fcc918c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"status\": \"disabled\",\n    \"timestamp\": 0,\n    \"value\": \"string\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices/:deviceId/points/:pointId/timeseries","description":"<p>Record historical data for a point</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"status\": \"disabled\",\n    \"timestamp\": 0,\n    \"value\": \"string\"\n  }\n]\n\n</code></pre>\n<p>Field Description:</p>\n<ul>\n<li><p>status (enum): Optional. Status of point. Possible values: ok,disabled,fault,down,no_value.</p>\n</li>\n<li><p>timestamp (long): Required. Time for timeserie from unix time. 0 means current time.</p>\n</li>\n<li><p>value (string): Optional. Value of point we are writing.</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices",":deviceId","points",":pointId","timeseries"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"id":"b50ea802-fe1c-49ae-b878-6ff75631af53","type":"any","value":"<buildingId>","key":"buildingId"},{"id":"df9f2bd1-a2cc-41e4-8c5a-855f7c27f8ef","type":"any","value":"<datasourceId>","key":"datasourceId"},{"id":"3576c270-e18c-40df-a430-84cfd2ed6be4","type":"any","value":"<deviceId>","key":"deviceId"},{"id":"463de7d9-6e61-4f16-8dc1-04b940c32e89","type":"any","value":"<pointId>","key":"pointId"}]}},"response":[{"id":"2472ca97-26ba-471c-b12e-76e9b2153c91","name":"create historical data for point","originalRequest":{"method":"POST","header":[{"key":"accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"[\n  {\n    \"status\": \"disabled\",\n    \"timestamp\": 0,\n    \"value\": \"string\"\n  }\n]","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/devices/:deviceId/points/:pointId/timeseries","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","devices",":deviceId","points",":pointId","timeseries"],"variable":[{"key":"buildingId","value":"<buildingId>"},{"key":"datasourceId","value":"<datasourceId>"},{"key":"deviceId","value":"<deviceId>"},{"key":"pointId","value":"<pointId>"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Thu, 06 Mar 2025 15:27:46 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"30"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"195"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91c2e1013de4d0cf-SOF"}],"cookie":[],"responseTime":null,"body":"{\n    \"message\": \"OK\",\n    \"status\": \"OK\"\n}"}],"_postman_id":"7294d7a7-31d3-49d0-afe3-0dab1fcc918c"}],"id":"aec7e101-da11-4482-a1b7-407eab211057","description":"<p>Timeseries data can be written at different levels: <strong>datasource</strong>, <strong>device</strong>, and <strong>point</strong>. The handling of IDs varies depending on the level:</p>\n<ul>\n<li><p><strong>Datasource Level</strong>: Use the internal <code>_id</code> assigned by our system.</p>\n</li>\n<li><p><strong>Device and Point Levels</strong>: Use the <strong>external system’s ID</strong>. These IDs must already exist in the external system, and our system will resolve and map them to the appropriate internal <code>_id</code>.</p>\n</li>\n</ul>\n<p>This approach ensures seamless integration with external systems, allowing devices and points to be referenced using familiar identifiers.</p>\n","_postman_id":"aec7e101-da11-4482-a1b7-407eab211057","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}}},{"name":"Actions","item":[{"name":"list actions for datasource","id":"addf415a-c1ae-4055-8de6-bcdd93bdfb0c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/actions","description":"<p>Retrieves list of actions available for specified datasource associated with buildings accessible to the authenticated service account.</p>\n<ul>\n<li><p>name: Actions that can be performed for specified datasource.</p>\n</li>\n<li><p>type: type of action READ/WRITE</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","actions"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"id":"8d892f51-4ecc-4e85-bb29-87948c872bde","description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"},{"id":"670d2d5f-dd21-4df8-b55a-91d5b38137fb","description":{"content":"<p>Id of datasource</p>\n","type":"text/plain"},"type":"any","value":"<datasourceId>","key":"datasourceId"}]}},"response":[{"id":"dee1bc83-58b7-4411-9b47-317f8dbccb65","name":"list actions for datasource","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/actions","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","actions"],"variable":[{"key":"buildingId","value":"<buildingId>"},{"key":"datasourceId","value":"<datasourceId>"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 24 Feb 2025 22:43:54 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"9172fa269d710c73-SOF"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"actions\": [\n            {\n                \"displayName\": \"Create Device and points\",\n                \"name\": \"DISCOVER\",\n                \"type\": \"WRITE\"\n            },\n            {\n                \"displayName\": \"Create timeseries\",\n                \"name\": \"TIMESERIES\",\n                \"type\": \"WRITE\"\n            },\n            {\n                \"displayName\": \"Create timeseries for one device\",\n                \"name\": \"TIMESERIES_FOR_DEVICE\",\n                \"type\": \"WRITE\"\n            },\n            {\n                \"displayName\": \"Create historical timeseries for one point\",\n                \"name\": \"TIMESERIES_HISTORICAL\",\n                \"type\": \"WRITE\"\n            }\n        ],\n        \"apiType\": \"API_KODE\",\n        \"entityName\": \"Point History\",\n        \"name\": \"PointHistory\"\n    }\n]"}],"_postman_id":"addf415a-c1ae-4055-8de6-bcdd93bdfb0c"},{"name":"list  fields for specified action of datasource","id":"feb01c4b-adcd-4cba-a122-70a724d08f8a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/actions/:action/fields","description":"<p>List Metadata of specified action for specified datasource. Use this api to get information on how to build body for invoke api.</p>\n<ul>\n<li><p>name: Name of field to send on actions.</p>\n</li>\n<li><p>dataType: Type of data required for this field</p>\n</li>\n<li><p>required: Whether this is MANDATORY</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","actions",":action","fields"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"id":"cbf24d68-18ad-4196-8d86-c884adcb2e89","description":{"content":"<p>Id of building</p>\n","type":"text/plain"},"type":"any","value":"<buildingId>","key":"buildingId"},{"id":"1ace3853-d9f5-4b57-a504-a241ea0d9252","description":{"content":"<p>Id of datasource</p>\n","type":"text/plain"},"type":"any","value":"<datasourceId>","key":"datasourceId"},{"id":"4ec83b31-38a8-44e3-9658-b84fbdad1a38","description":{"content":"<p>Action to get fields for.</p>\n","type":"text/plain"},"type":"any","value":"<action>","key":"action"}]}},"response":[{"id":"fd868e74-1c02-4166-b728-a528cdea894f","name":"list  fields for specified action of datasource","originalRequest":{"method":"GET","header":[{"key":"accept","value":"application/json"}],"url":{"raw":"https://api.kodelabs.com/kodeos/integrations/api/v1/buildings/:buildingId/datasources/:datasourceId/actions/:action/fields","host":["https://api.kodelabs.com/kodeos"],"path":["integrations","api","v1","buildings",":buildingId","datasources",":datasourceId","actions",":action","fields"],"variable":[{"key":"buildingId","value":"<buildingId>"},{"key":"datasourceId","value":"<datasourceId>"},{"key":"action","value":"<action>"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Mon, 24 Feb 2025 22:46:55 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"CF-Cache-Status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"9172fe930881d103-SOF"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"devices\",\n        \"dataType\": \"OBJECT\",\n        \"displayName\": \"devices\",\n        \"inputType\": \"TEXT_BOX\",\n        \"metadata\": {\n            \"isDisabled\": false,\n            \"required\": \"MANDATORY\"\n        },\n        \"name\": \"devices\",\n        \"options\": []\n    }\n]"}],"_postman_id":"feb01c4b-adcd-4cba-a122-70a724d08f8a"},{"name":"invoke action for datasource action","id":"63c465b7-eee5-42b0-b5be-534c2d62ea10","protocolProfileBehavior":{"disabledSystemHeaders":{"accept":true},"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"actions\": [\n        {\n            \"id\": \"devices\",\n            \"value\": \"[{\\\"id\\\": \\\"test2\\\",\\\"name\\\": \\\"name2\\\",\\\"points\\\": [{\\\"pointId\\\": \\\"p1\\\",\\\"name\\\": \\\"point1\\\",\\\"kind\\\": \\\"Str\\\"}]}]\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/actions/:action/invoke","description":"<p>Invoke action with value for given datasource action.</p>\n<p>Body to be build based on metadata contained from \"/fields\" endpoint.</p>\n<p>For DISCOVER action type payload looks like:</p>\n<p>Value should be a stringify json.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"actions\": [\n        {\n            \"id\": \"devices\",\n            \"value\": \"[{\\\"id\\\": \\\"deviceId\\\",\\\"name\\\": \\\"deviceName\\\",\\\"points\\\": [{\\\"pointId\\\": \\\"pointId\\\",\\\"name\\\": \\\"pointName\\\",\\\"kind\\\": \\\"Str\\\"}]}]\"\n        }\n    ]\n}\n\n</code></pre>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}},"urlObject":{"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","actions",":action","invoke"],"host":["https://api.kodelabs.com/kodeos"],"query":[],"variable":[{"id":"6a46f294-6629-4fee-a67d-7e30dc22bad6","type":"any","value":"<buildingId>","key":"buildingId"},{"id":"322649e0-7c43-445b-a9a0-d096112c95a5","type":"any","value":"<datasourceId>","key":"datasourceId"},{"id":"ba738af2-b993-4c16-a9c8-a2b7c4e47489","type":"any","value":"<action>","key":"action"}]}},"response":[{"id":"11d31abe-ec38-406d-a2f8-9252bd105195","name":"invoke action for datasource action","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"actions\": [\n        {\n            \"id\": \"devices\",\n            \"value\": \"[{\\\"id\\\": \\\"test2\\\",\\\"name\\\": \\\"name2\\\",\\\"points\\\": [{\\\"pointId\\\": \\\"p1\\\",\\\"name\\\": \\\"point1\\\",\\\"kind\\\": \\\"Str\\\"}]}]\"\n        }\n    ]\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"https://api.kodelabs.com/kodeos/api/v1/buildings/:buildingId/integrations/datasources/:datasourceId/actions/:action/invoke","host":["https://api.kodelabs.com/kodeos"],"path":["api","v1","buildings",":buildingId","integrations","datasources",":datasourceId","actions",":action","invoke"],"variable":[{"key":"buildingId","value":"<buildingId>"},{"key":"datasourceId","value":"<datasourceId>"},{"key":"action","value":"<action>"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Date","value":"Wed, 05 Mar 2025 09:09:54 GMT"},{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"x-rate-limit-remaining","value":"985"},{"key":"Cache-Control","value":"no-cache, no-store, max-age=0, must-revalidate"},{"key":"pragma","value":"no-cache"},{"key":"expires","value":"0"},{"key":"x-content-type-options","value":"nosniff"},{"key":"strict-transport-security","value":"max-age=31536000; includeSubDomains; preload"},{"key":"x-frame-options","value":"DENY"},{"key":"x-xss-protection","value":"0"},{"key":"referrer-policy","value":"no-referrer"},{"key":"via","value":"1.1 google"},{"key":"cf-cache-status","value":"DYNAMIC"},{"key":"Server","value":"cloudflare"},{"key":"CF-RAY","value":"91b87a2409e8d0d6-SOF"},{"key":"Content-Encoding","value":"gzip"}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"value\": \"{\\\"deviceSize\\\":1,\\\"pointsSize\\\":1}\"\n    },\n    \"type\": \"TEXT\"\n}"}],"_postman_id":"63c465b7-eee5-42b0-b5be-534c2d62ea10"}],"id":"88a50091-b1f5-43c1-b41c-356aa0d60fc5","_postman_id":"88a50091-b1f5-43c1-b41c-356aa0d60fc5","description":"","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}}}],"id":"92572884-4ee0-4181-b0f9-9488fba60a34","description":"<p>This API is organized around <a href=\"http://en.wikipedia.org/wiki/Representational_State_Transfer\">REST</a>. Our API has predictable resource-oriented URLs, accepts and returns <a href=\"http://www.json.org/\">JSON-encoded</a> bodies, and uses standard HTTP response codes, authentication, and verbs.</p>\n<p>For authentication uses Bearer tokens that are sent on api in Authorization Header</p>\n","_postman_id":"92572884-4ee0-4181-b0f9-9488fba60a34","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"0db06e08-772a-492b-9a93-f5d18c67b15c","id":"0db06e08-772a-492b-9a93-f5d18c67b15c","name":"KODE OS Public API","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"event":[{"listen":"prerequest","script":{"id":"bf4eda02-2fb9-449b-a38f-c35a68f4a480","type":"text/javascript","packages":{},"exec":[""]}},{"listen":"test","script":{"id":"e843e388-e2b9-43d2-b6c7-e4b45a01a71c","type":"text/javascript","packages":{},"exec":[""]}}],"variable":[{"key":"baseUrl","value":"https://api.kodelabs.com/kodeos","type":"string"},{"key":"buildingId","value":"buildingId","type":"string"},{"key":"areaId","value":"areaId","type":"string"},{"key":"datasourceId","value":"datasourceId","type":"string"},{"key":"deviceId","value":"deviceId","type":"string"},{"key":"pointId","value":"pointId","type":"string"},{"key":"page","value":"1","type":"string"},{"key":"limit","value":"50","type":"string"},{"key":"from","value":"","type":"string"},{"key":"to","value":"","type":"string"},{"key":"access_token","value":"","type":"string"}]}