resources.related (version 1)
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.
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
fromIds*array<>Resources to start from
1 <= items <= 200relationship*stringRelationship key, e.g. "brick_Has_Part"
^[A-Za-z0-9_]+$direction?string"out" follows the relationship as named (Has Part); "in" follows its inverse (Is Part Of)
"out""out""in"maxDepth?integerSteps to follow; e.g. 2 for building → levels → rooms via brick_Has_Part
1 <= value <= 101targetTypeKeys?array<>Only these types and their subtypes, e.g. ["rec_Room"] (keys from resourceTypes.list)
1 <= items <= 100targetMainTypes?array<>Only these main types
1 <= itemslimit?integer1 <= value <= 50001000The function output
application/json- response
related*array<>items <= 5000truncated*booleanTrue when limit cut the result; narrow the filters or raise limit
curl -X POST 'https://ai.relynk.io/builder/v1/resources.related/v1' \ -H 'Content-Type: application/json' \ -d '{ "fromIds": [ "64df67fb-d7ae-48f8-abc3-1fd3db709c57" ], "relationship": "string"}'{ "related": [ { "id": "string", "name": "string", "typeKey": "string", "typeName": "string", "mainType": "string", "buildingId": "string", "fromId": "string", "depth": 0 } ], "truncated": true}resources.list (version 1) POST
Resources (buildings, levels, rooms, equipment, points, …) filtered by building, type, name or id. Pages by id: pass nextCursor back until it is null. For the points of equipment or rooms use points.list; for connected resources use resources.related.
points.list (version 1) POST
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.