API Reference V2.0.0 [BETA]
You are currently looking at a work in progress version of the Relynk API V2.0.0. Consider the underlying APIs and messaging formats as stable, but many APIs are will be added over time. If you feel anything is missing or face any issues please reach out to support@relynk.io.
Relynk API (2.0.0_beta)
Download OpenAPI specification:Download
get list of customers that the user has access to
Authorizations:
query Parameters
| customerId | string <uuid> customer id context, id can be fetched from /customers endpoint |
| limit | integer (Limit) [ 1 .. 500 ] limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| order | string (Order) Enum: "asc" "desc" order the returned list |
| sort | string Value: "name" sort the returned list |
| name | string filter by name |
| id | string <uuid> filter by id |
| name__contains | string filter by name contains |
Responses
Response samples
- 200
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
]get list of points
get list of points. points could be sensors, actuators, parameters, commands, setpoints or alarms
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| limit | integer (Limit) [ 1 .. 500 ] limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| order | string (Order) Enum: "asc" "desc" order the returned list |
| sort | string Enum: "id" "name" sort the returned list |
| name | string filter by name |
| name__contains | string filter by name contains |
| id | string <uuid> filter by id |
| fromIntegrationId | string filter by from integration id |
| fromIntegrationName | string filter by from integration name |
| subtype | string Examples:
filter by subtype using brickschema/real estate core standard full uri. |
| hasUnit | string Examples:
filter by unit, using qudt/brickschema/real estate core standard full uri. |
| isPointOfAssetId | string <uuid> filter by is point of asset id |
| isPointOfAssetName | string filter by is point of asset name |
| isPointOfAssetName__contains | string filter by is point of asset name contains |
| isPointOfSpaceId | string <uuid> filter by is point of space id |
| isPointOfSpaceName | string filter by is point of space name |
| isPointOfSpaceName__contains | string filter by is point of space name contains |
| includeOptionalFields | Array of strings Items Enum: "isPointOfAssetIds" "isPointOfSpaceIds" include point fields that are not returned by defafault. these match the returned fields object keys that they will enable. |
Responses
Response samples
- 200
[- {
- "customerId": "123e4567-e89b-12d3-a456-426614174000",
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "501 - temp sensor RT601",
- "fromIntegrationId": "123e4567-e89b-12d3-a456-426614174000",
- "fromIntegrationName": "bacnet",
- "isPointOfAssetIds": null,
- "isPointOfSpaceIds": [
- "123e4567-e89b-12d3-a456-426614174000"
]
}
]get list of points timeseries
get list of points timeseries, points could be sensors, actuators, parameters, commands, setpoints or alarms
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| from | string <date-time> from date time, when provided together with parameter "to", the timespan must not exceed 6 months |
| to | string <date-time> to date time, when provided together with parameter "from", the timespan must not exceed 6 months |
| limit | integer [ 1 .. 2000 ] limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| order | string (Order) Enum: "asc" "desc" order the returned list |
| sort | string Value: "timestamp" sort the returned list |
| name | string filter by name |
| name__contains | string filter by name contains |
| id | string <uuid> filter by id |
| fromIntegrationId | string filter by from integration id |
| fromIntegrationName | string filter by from integration name |
| subtype | string Examples:
filter by subtype using brickschema/real estate core standard full uri. |
| hasUnit | string Examples:
filter by unit |
| isPointOfAssetId | string <uuid> filter by is point of asset id |
| isPointOfAssetName | string filter by is point of asset name |
| isPointOfAssetName__contains | string filter by is point of asset name contains |
| isPointOfSpaceId | string <uuid> filter by is point of space id |
| isPointOfSpaceName | string filter by is point of space name |
| isPointOfSpaceName__contains | string filter by is point of space name contains |
| includeOptionalFields | Array of strings Items Enum: "hasUnit" "name" "subtype" include point value fields that are not returned by defafault. these match the returned fields object keys that they will enable. |
Responses
Response samples
- 200
[- {
- "customerId": "123e4567-e89b-12d3-a456-426614174000",
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "timestamp": "2021-01-01T00:00:00Z",
- "name": "501 - temp sensor RT601",
- "value": 20,
}
]get list of points latest values
get list of points latest values, points could be sensors, actuators, parameters, commands, setpoints or alarms
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| limit | integer (Limit) [ 1 .. 500 ] limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| order | string (Order) Enum: "asc" "desc" order the returned list |
| sort | string Enum: "id" "name" "value" "timestamp" sort the returned list |
| name | string filter by name |
| name__contains | string filter by name contains |
| id | string <uuid> filter by id |
| fromIntegrationId | string filter by from integration id |
| fromIntegrationName | string filter by from integration name |
| subtype | string Examples:
filter by subtype using brickschema/real estate core standard full uri. |
| hasUnit | string Examples:
filter by unit, using qudt/brickschema/real estate core standard full uri. |
| isPointOfAssetId | string <uuid> filter by is point of asset id |
| isPointOfAssetName | string filter by is point of asset name |
| isPointOfAssetName__contains | string filter by is point of asset name contains |
| isPointOfSpaceId | string <uuid> filter by is point of space id |
| isPointOfSpaceName | string filter by is point of space name |
| isPointOfSpaceName__contains | string filter by is point of space name contains |
| includeOptionalFields | Array of strings Items Enum: "hasUnit" "name" "subtype" include point value fields that are not returned by defafault. these match the returned fields object keys that they will enable. |
Responses
Response samples
- 200
[- {
- "customerId": "123e4567-e89b-12d3-a456-426614174000",
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "501 - temp sensor RT601",
- "timestamp": "2021-01-01T00:00:00Z",
- "value": 20,
}
]get list of spaces
get list of spaces, these include rooms, floors/levels, buildings, etc.
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| limit | integer (Limit) [ 1 .. 500 ] limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| order | string (Order) Enum: "asc" "desc" order the returned list |
| sort | string Enum: "id" "name" sort the returned list |
| name | string filter by name |
| name__contains | string filter by name contains |
| displayName | string filter by display name |
| displayName__contains | string filter by display name contains |
| id | string <uuid> filter by id |
| type | string Examples:
filter by category using brickschema/real estate core standard full uri. |
| subtype | string Examples:
filter by subtype using brickschema/real estate core standard full uri. |
| levelNumber | integer filter by level number |
| isPartOfSpaceId | string <uuid> filter by is part of space id |
| path__contains | string filter by path contains space ids . seperated |
| includeOptionalFields | Array of strings Items Enum: "hasPartSpaceIds" "isLocationOfAssetIds" "isLocationOfBuildingElementIds" "hasGeometryIds" "hasFileIds" "hasPointIds" "isFedByAssetIds" "isOwnedByAgentIds" "includedByCollectionIds" "meteredByAssetIds" include optional fields |
Responses
Response samples
- 200
[- {
- "customerId": "123e4567-e89b-12d3-a456-426614174000",
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Meeting Room 1",
- "path": "a646a595-ead8-5380-a2d0-199564e8dba0.123e4567-e89b-12d3-a456-426614174000",
- "isPartOfSpaceId": "a646a595-ead8-5380-a2d0-199564e8dba0",
- "identifiers": { }
}
]get latest status of spaces
get latest status of spaces
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| limit | integer (Limit) [ 1 .. 500 ] limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| order | string (Order) Enum: "asc" "desc" order the returned list |
| sort | string Enum: "id" "name" sort the returned list |
| name | string filter by name |
| name__contains | string filter by name contains |
| displayName | string filter by display name |
| displayName__contains | string filter by display name contains |
| id | string <uuid> filter by id |
| type | string Examples:
filter by type using brickschema/real estate core standard full uri. |
| subtype | string Examples:
filter by subtype using brickschema/real estate core standard full uri. |
| levelNumber | integer filter by level number |
| isPartOfSpaceId | string <uuid> filter by is part of space id |
| path__contains | string filter by path contains |
| includeOptionalFields | Array of strings Items Enum: "name" "displayName" "occupancy" "occupancyCount" "temperature" "humidity" "co2" "todaysBookingEvents" include status fields |
Responses
Response samples
- 200
[- {
- "customerId": "123e4567-e89b-12d3-a456-426614174000",
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Meeting Room 1",
- "occupancy": 1,
- "occupancyCount": 10,
- "temperature": 20,
- "co2": 400,
}
]Get all assets
Get all assets, these are the physical assets in the customer's environment like air handling units, chillers, radiators, dampers, etc.
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| limit | integer (Limit) [ 1 .. 500 ] limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| order | string (Order) Enum: "asc" "desc" order the returned list |
| sort | string Enum: "id" "name" sort the returned list |
| name | string filter by name |
| name__contains | string filter by name contains |
| id | string <uuid> filter by id |
| type | string Examples:
filter by category using brickschema/real estate core standard full uri. |
| subtype | string Examples:
filter by subtype using brickschema/real estate core standard full uri. |
| path__contains | string filter by path contains space or asset id |
| includedByCollectionName | string filter by included by collection name |
| includedByCollectionName__contains | string filter by included by collection name contains |
| includeOptionalFields | Array of strings Items Enum: "locatedInSpaces" "hasAssetParts" "isPartOfAssets" "hasPointIntegrationDataSources" "hasPointIds" "feedsAssets" "feedsSpaces" "fedByAssets" "ownedByAgents" "includedByCollections" "isSubMeterOfAssets" "isMeterOfAssets" "metersAssets" "meteredByAssets" "metersSpaces" "metersAgents" "metersCollections" include optional fields that are not included in response by default, these match the keys in response object |
Responses
Response samples
- 200
[- {
- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "subtype": "string",
- "type": "string",
- "path": "string",
- "mountedOn": "6e8be901-98bd-4913-80ea-e466ac959c9b",
- "operationalStageCount": "string",
- "assetTag": "string",
- "commissioningDate": "2019-08-24T14:15:22Z",
- "identifiers": { },
- "initialCost": "string",
- "installationDate": "2019-08-24T14:15:22Z",
- "ipAddress": "string",
- "macAddress": "string",
- "maintenanceInterval": "string",
- "modelNumber": "string",
- "serialNumber": "string",
- "turnoverDate": "2019-08-24T14:15:22Z",
- "weight": "string",
- "isVirtualMeter": true,
- "meterType": "string",
- "meteringMethod": "string",
- "meterSourceType": "string",
- "meterUsageType": "string",
- "meteringDerivedFromPointId": "8243f474-583d-4c7a-bd79-77a4929dfdf2",
- "locatedInSpaces": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "hasAssetParts": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "isPartOfAssets": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "hasPointIntegrationDataSources": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "hasPointIds": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "feedsAssets": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "feedsSpaces": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "fedByAssets": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "ownedByAgents": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "includedByCollections": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "isSubMeterOfAssets": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "isMeterOfAssets": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "metersAssets": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "meteredByAssets": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "metersSpaces": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "metersAgents": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "metersCollections": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
]get list of collections
get list of collections, these can include collections of assets, spaces, building elements, etc.
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| limit | integer (Limit) [ 1 .. 500 ] limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| order | string (Order) Enum: "asc" "desc" order the returned list |
| sort | string Enum: "id" "name" sort the returned list |
| name | string filter by name |
| name__contains | string filter by name contains |
| id | string <uuid> filter by id |
| subtype | string filter by subtype |
| includeOptionalFields | Array of strings Items Enum: "includesAssetIds" "includesSpaceIds" "includesBuildingElementIds" "isOwnedByAgentIds" "isMeteredByAssetIds" include optional fields |
Responses
Response samples
- 200
[- {
- "customerId": "123e4567-e89b-12d3-a456-426614174000",
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Building 1 Assets",
- "subtype": "AssetCollection",
- "identifiers": { },
- "totalGrossArea": 1000.5,
- "totalNetArea": 800.3,
- "totalRentableArea": 900.1
}
]bulk export of tenant resources
Returns a paginated flat list of resources for bulk sync or ETL. Only resources whose main type is one of Agent, Space, Asset, Collection, BuildingElement, or Point are included; integration and internal export types are omitted. Results are ordered by resource id. Use limit and offset to page through the full dataset (default page size 50 000, maximum 200 000).
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| limit | integer (ExportLimit) [ 1 .. 200000 ] Default: 50000 limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| id | string <uuid> filter by resource id |
| name | string filter by exact resource name |
| name__contains | string filter by resource name contains (case-insensitive) |
| mainType | string filter by REC main type category, e.g. Point, Space, Asset, Collection, BuildingElement, Agent |
| rdfType | string filter by RDF type URI, e.g. https://brickschema.org/schema/Brick#Temperature_Sensor |
| partOfBuildingResourceId | string <uuid> filter by building resource id the resource belongs to |
Responses
Response samples
- 200
[- {
- "customerId": "123e4567-e89b-12d3-a456-426614174000",
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Meeting Room 1",
- "mainType": "Space",
- "rdfUnitType": null,
- "partOfBuildingResourceId": "a646a595-ead8-5380-a2d0-199564e8dba0",
- "updatedAt": "2024-01-01T00:00:00Z",
- "props": {
- "displayName": "Meeting Room 1",
- "levelNumber": 5
}
}
]bulk export of tenant relationships
Returns a paginated flat list of relationships for bulk sync or ETL. Only relationships where both source and destination resources are of an included main type (Agent, Space, Asset, Collection, BuildingElement, or Point) are returned. Results are ordered by relationship id. Use limit and offset to page through the full dataset (default page size 50 000, maximum 200 000).
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| limit | integer (ExportLimit) [ 1 .. 200000 ] Default: 50000 limit the number returned |
| offset | integer (Offset) >= 0 offset the returned list |
| rdfRelationshipType | string filter by RDF relationship type URI, e.g. https://brickschema.org/schema/Brick#Has_Point |
| srcResourceId | string <uuid> filter by source resource id |
| dstResourceId | string <uuid> filter by destination resource id |
| srcResourceName | string filter by exact source resource name |
| srcResourceName__contains | string filter by source resource name contains (case-insensitive) |
| dstResourceName | string filter by exact destination resource name |
| dstResourceName__contains | string filter by destination resource name contains (case-insensitive) |
Responses
Response samples
- 200
[- {
- "customerId": "123e4567-e89b-12d3-a456-426614174000",
- "srcResourceId": "26f748ab-e5cc-4e6a-8d94-75cfd759e1aa",
- "dstResourceId": "0eb8e6e5-9ba4-4a0b-bbb0-41162e01d13b",
- "updatedAt": "2024-01-01T00:00:00Z"
}
]bulk export of point event timeseries
Returns up to 200 000 point events per request together with a nextUrl for the following page. Designed for full historical export of a customer's point event data and continuous delta export.
Initial request — POST with only customerId. The server finds the earliest observation time for the customer and returns events from that time onwards`.
Continuation — Follow nextUrl from the previous response (or pass its cursor query parameter manually). The cursor value is the cursor value from the previous response.
Repeat POST requests using each nextUrl until the export 0 events is returned. To get future events, store the nextUrl and use this at a scheduled interval to receive future events ensuring to always store and use the latest nextUrl from last response.
Authorizations:
query Parameters
| customerId required | string <uuid> customer id context, id can be fetched from /customers endpoint |
| cursor | string Example: cursor=MTcwNDA2NzIwMDow pagination cursor |
Responses
Response samples
- 200
{- "events": [
- {
- "r": "0eb8e6e5-9ba4-4a0b-bbb0-41162e01d13b",
- "t": "2024-01-01T12:00:00Z",
- "v": 21.5
}
],
}