points.list (version 1)
Points (sensors, meters, setpoints, commands) with their unit and latest reading, for a building, for given equipment or rooms (resourceIds: the points they have), or by id. Give at least one of buildingId, resourceIds or ids. To find a kind of point on a kind of resource (room temperatures, the supply air temperature of air handling units), first list those resources with resources.list (typeKeys from resourceTypes.list), then pass their ids as resourceIds together with the point typeKeys: a point type with only a buildingId also matches points of every other resource in the building, and typeKeys include subtypes (brick_Temperature_Sensor also matches supply, return and outside air temperature sensors). Each point names its exact typeKey and its resourceIds. Pages by id: pass nextCursor back until it is null. Feed the ids to points.timeseries, points.summary or points.raw.
bearerAuthorizationBearer <JWT>A signed-in Relynk user's access token: OAuth 2.0 authorization code with PKCE at https://auth.relynk.io/authorize and https://auth.relynk.io/oauth/token, with audience https://ai.relynk.io/builder. The caller sees exactly what that user may see.
tenantId?stringThe tenant to read. May be left out when the caller belongs to exactly one tenant; GET /me lists them.
uuidapplication/json- body
buildingId?stringA building id (from buildings.list). Matches the building itself and everything that is part of it
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidresourceIds?array<>Only points of these resources (equipment, rooms, meters)
1 <= items <= 1000ids?array<>Only these points
1 <= items <= 1000typeKeys?array<>Only these types and their subtypes, e.g. ["rec_Room"] (keys from resourceTypes.list)
1 <= items <= 100unitKeys?array<>Only these units, e.g. ["unit_Kilo_W_hr"]
1 <= items <= 50search?stringOnly names containing this text, ignoring case
1 <= length <= 200limit?integer1 <= value <= 2000500cursor?stringnextCursor from the previous page; omit for the first page
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidThe function output
application/json- response
points*array<>items <= 2000nextCursor*|Pass as cursor for the next page; null on the last
curl -X POST 'https://ai.relynk.io/builder/v1/points.list/v1' \ -H 'Content-Type: application/json' \ -d '{}'{ "points": [ { "id": "string", "name": "string", "typeKey": "string", "typeName": "string", "typePath": "string", "unitKey": "string", "unit": "string", "resourceIds": [ "string" ], "buildingId": "string", "latest": { "time": "string", "value": 0, "text": "string" } } ], "nextCursor": "string"}resources.related (version 1) POST
Resources connected to the given ones by one relationship, following it up to maxDepth steps. One row per (fromId, related resource) at its shortest depth. Common relationships: brick_Has_Part (building → levels → rooms; "in" = Is Part Of), brick_Feeds (air handling unit → terminal units → rooms; "in" = Is Fed By), brick_Has_Sub_Meter, brick_Is_Metered_By, rec_Located_In, relynk_Virtual_Meter_Calculated_From. resourceTypes.relationships shows which ones a building uses. For points use points.list with resourceIds.
points.raw (version 1) POST
Individual readings of up to 20 points over [from, to) (up to 31 days), ordered by point then time. Prefer points.timeseries or points.summary for analysis; use this to inspect exact readings. Pages: pass nextCursor back until it is null. Each page has one series per point that has readings in it, so merge pages by pointId.