Download OpenAPI specification:Download
Authentication is required prior to accessing the Willow API. Refer to Authentication section above for details.
grant_type=string&client_id=string&client_secret=string
{- "access_token": "string",
- "token_type": "string",
- "expires_in": 0
}
If model retrieved successfully.
If id is not valid or null or empty.
If model not found
{- "id": "dtmi:com:willowinc:Room;1",
- "displayName": {
- "en": "Room"
}, - "description": {
- "en": "A portion of space within a building that's usually enclosed and has its own walls, floor, and ceiling."
}, - "modelDefinition": "{\"@id\":\"dtmi:com:willowinc:Room;1\",\n \"@type\":\"Interface\",\n \"displayName\":{\"en\":\"Room\"},\n \"description\":{\"en\":\"A portion of space within a building that's usually enclosed and has its own walls, floor, and ceiling.\"},\n \"extends\":[\"dtmi:com:willowinc:Space;1\"],\n \"contents\":[{\n \"@type\":\"Property\",\n \"name\":\"type\",\n \"displayName\":{\"en\":\"Type\"},\n \"writable\": true,\n \"schema\":\"string\"\n },\n {\n \"@type\":[\"Property\",\"Volume\"],\n \"name\":\"volume\",\n \"displayName\":{\"en\":\"Volume\"},\n \"writable\": true,\n \"schema\":\"double\",\n \"unit\":\"cubicMetre\"\n },\n {\n \"@type\":[\"Property\",\"ValueAnnotation\",\"Override\"],\n \"displayName\":{\"en\":\"volume unit\"},\n \"name\":\"volumeUnit\",\n \"annotates\":\"volume\",\n \"overrides\":\"unit\",\n \"schema\":\"VolumeUnit\",\n \"writable\": true\n }\n ],\n \"@context\":[\n \"dtmi:dtdl:context;3\",\n \"dtmi:dtdl:extension:quantitativeTypes;1\",\n \"dtmi:dtdl:extension:annotation;1\",\n \"dtmi:dtdl:extension:overriding;1\"\n ]\n }",
- "uploadTime": "2024-08-30T03:33:54.7015118+00:00"
}
Returns models for the input root Id.
If a input validation error occurs.
[- {
- "id": "dtmi:com:willowinc:Room;1",
- "displayName": {
- "en": "Room"
}, - "description": {
- "en": "A portion of space within a building that's usually enclosed and has its own walls, floor, and ceiling."
}, - "modelDefinition": "{\"@id\":\"dtmi:com:willowinc:Room;1\",\n \"@type\":\"Interface\",\n \"displayName\":{\"en\":\"Room\"},\n \"description\":{\"en\":\"A portion of space within a building that's usually enclosed and has its own walls, floor, and ceiling.\"},\n \"extends\":[\"dtmi:com:willowinc:Space;1\"],\n \"contents\":[{\n \"@type\":\"Property\",\n \"name\":\"type\",\n \"displayName\":{\"en\":\"Type\"},\n \"writable\": true,\n \"schema\":\"string\"\n },\n {\n \"@type\":[\"Property\",\"Volume\"],\n \"name\":\"volume\",\n \"displayName\":{\"en\":\"Volume\"},\n \"writable\": true,\n \"schema\":\"double\",\n \"unit\":\"cubicMetre\"\n },\n {\n \"@type\":[\"Property\",\"ValueAnnotation\",\"Override\"],\n \"displayName\":{\"en\":\"volume unit\"},\n \"name\":\"volumeUnit\",\n \"annotates\":\"volume\",\n \"overrides\":\"unit\",\n \"schema\":\"VolumeUnit\",\n \"writable\": true\n }\n ],\n \"@context\":[\n \"dtmi:dtdl:context;3\",\n \"dtmi:dtdl:extension:quantitativeTypes;1\",\n \"dtmi:dtdl:extension:annotation;1\",\n \"dtmi:dtdl:extension:overriding;1\"\n ]\n }",
- "uploadTime": "2024-08-30T03:33:54.7015118+00:00"
}
]
The Twins endpoints enable creating, updating, and fetching one or more twins at a time. When receiving twins, there are also options to include relationships in the same response.
Twin information successfully retrieved.
Twin not found.
{- "id": "TW-DD-II-L01",
- "modelId": "dtmi:com:willowinc:Level;1",
- "lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00",
- "contents": {
- "levelNumber": 0,
- "mappedIds": [
- {
- "exactType": "ExternalIdentity",
- "scope": "CONNECTOR",
- "scopeId": "CONxxxxxxxxxxx",
- "value": "TW-CC-II-L01"
}, - {
- "exactType": "FloorLevelIdentity",
- "scope": "BUILDING",
- "scopeId": "BLDGxxxxxxxxxxxxxxx",
- "value": "0"
}, - {
- "exactType": "ExternalIdentity",
- "scope": "ORG",
- "scopeId": "ORG2xxxxxxxxxxx",
- "value": "urn:willowinc:twin:id:TW-DD-II-L01"
}
], - "name": "Floor_1",
- "uniqueID": "a360cf30-c112-40a1-b4b4-f65da82fa9e8",
- "externalID": "FLRPXxxxxxxxxxxxxxxxx",
- "code": "L01",
- "siteID": "104bd33c-a697-4027-b6a6-677e30a53d09",
- "alternateClassification": {
- "brickSchema": {
- "version": "2024-01-03",
- "code": "dtmi:org:brickschema:schema:Brick:Floor;1"
}
}, - "externalIds": {
- "mappingKey": "msrc:///CON5xxxxxxxxxxxxxxxx@willow-source/twin/TW-DD-II-L01"
}, - "area": {
- "$metadata": {
- "$lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00"
}
}
}, - "incomingRelationships": [
- {
- "Id": "Room-L01-100_isPartOf_TW-DD-II-L01",
- "targetId": "TW-DD-II-L01",
- "sourceId": "Room-L01-100",
- "name": "isPartOf"
}
], - "outgoingRelationships": [
- {
- "Id": "TW-DD-II-L01_isPartOf_BLDG-1",
- "targetId": "BLDG-1",
- "sourceId": "TW-DD-II-L01",
- "name": "isPartOf"
}
]
}
Ok Response.
Twin not found with the supplied Id.
[- {
- "operationType": "Add",
- "path": "string",
- "op": "string",
- "from": "string",
- "value": null
}
]
"string"
Retrieve twin details for the list of twin Ids included in the request body. Any ids that do not reference valid twins will silently be omitted from the response -- no 404/NotFound will be generated. Match response against your query to find any invalid IDs.
Twin information
[- "string"
]
[- {
- "id": "TW-DD-II-L01",
- "modelId": "dtmi:com:willowinc:Level;1",
- "lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00",
- "contents": {
- "levelNumber": 0,
- "mappedIds": [
- {
- "exactType": "ExternalIdentity",
- "scope": "CONNECTOR",
- "scopeId": "CONxxxxxxxxxxx",
- "value": "TW-CC-II-L01"
}, - {
- "exactType": "FloorLevelIdentity",
- "scope": "BUILDING",
- "scopeId": "BLDGxxxxxxxxxxxxxxx",
- "value": "0"
}, - {
- "exactType": "ExternalIdentity",
- "scope": "ORG",
- "scopeId": "ORG2xxxxxxxxxxx",
- "value": "urn:willowinc:twin:id:TW-DD-II-L01"
}
], - "name": "Floor_1",
- "uniqueID": "a360cf30-c112-40a1-b4b4-f65da82fa9e8",
- "externalID": "FLRPXxxxxxxxxxxxxxxxx",
- "code": "L01",
- "siteID": "104bd33c-a697-4027-b6a6-677e30a53d09",
- "alternateClassification": {
- "brickSchema": {
- "version": "2024-01-03",
- "code": "dtmi:org:brickschema:schema:Brick:Floor;1"
}
}, - "externalIds": {
- "mappingKey": "msrc:///CON5xxxxxxxxxxxxxxxx@willow-source/twin/TW-DD-II-L01"
}, - "area": {
- "$metadata": {
- "$lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00"
}
}
}, - "incomingRelationships": [
- {
- "Id": "Room-L01-100_isPartOf_TW-DD-II-L01",
- "targetId": "TW-DD-II-L01",
- "sourceId": "Room-L01-100",
- "name": "isPartOf"
}
], - "outgoingRelationships": [
- {
- "Id": "TW-DD-II-L01_isPartOf_BLDG-1",
- "targetId": "BLDG-1",
- "sourceId": "TW-DD-II-L01",
- "name": "isPartOf"
}
]
}
]
Instance of GetTwinsRequest.
Page`1.
{- "ModelFilter": {
- "ModelIds": [ ],
- "ExactModelMatch": true
}, - "LocationFilter": {
- "LocationId": null
}, - "DateFilter": {
- "LastUpdatedAfter": "2024-09-23T15:16:03.4050000+00:00",
- "LastUpdatedBefore": "2024-09-23T15:16:03.4050000+00:00"
}, - "Include": {
- "OutgoingRelationships": true,
- "IncomingRelationships": true
}, - "PageSize": 101,
- "ContinuationToken": null
}
{- "content": [
- {
- "id": "TW-DD-II-L01",
- "modelId": "dtmi:com:willowinc:Level;1",
- "lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00",
- "contents": {
- "levelNumber": 0,
- "mappedIds": [
- {
- "exactType": "ExternalIdentity",
- "scope": "CONNECTOR",
- "scopeId": "CONxxxxxxxxxxx",
- "value": "TW-CC-II-L01"
}, - {
- "exactType": "FloorLevelIdentity",
- "scope": "BUILDING",
- "scopeId": "BLDGxxxxxxxxxxxxxxx",
- "value": "0"
}, - {
- "exactType": "ExternalIdentity",
- "scope": "ORG",
- "scopeId": "ORG2xxxxxxxxxxx",
- "value": "urn:willowinc:twin:id:TW-DD-II-L01"
}
], - "name": "Floor_1",
- "uniqueID": "a360cf30-c112-40a1-b4b4-f65da82fa9e8",
- "externalID": "FLRPXxxxxxxxxxxxxxxxx",
- "code": "L01",
- "siteID": "104bd33c-a697-4027-b6a6-677e30a53d09",
- "alternateClassification": {
- "brickSchema": {
- "version": "2024-01-03",
- "code": "dtmi:org:brickschema:schema:Brick:Floor;1"
}
}, - "externalIds": {
- "mappingKey": "msrc:///CON5xxxxxxxxxxxxxxxx@willow-source/twin/TW-DD-II-L01"
}, - "area": {
- "$metadata": {
- "$lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00"
}
}
}, - "incomingRelationships": [
- {
- "Id": "Room-L01-100_isPartOf_TW-DD-II-L01",
- "targetId": "TW-DD-II-L01",
- "sourceId": "Room-L01-100",
- "name": "isPartOf"
}
], - "outgoingRelationships": [
- {
- "Id": "TW-DD-II-L01_isPartOf_BLDG-1",
- "targetId": "BLDG-1",
- "sourceId": "TW-DD-II-L01",
- "name": "isPartOf"
}
]
}
], - "continuationToken": "string"
}
Instance of DigitalTwin.
Created Twin .
{- "id": "TW-DD-II-L01",
- "modelId": "dtmi:com:willowinc:Level;1",
- "lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00",
- "contents": {
- "levelNumber": 0,
- "mappedIds": [
- {
- "exactType": "ExternalIdentity",
- "scope": "CONNECTOR",
- "scopeId": "CONxxxxxxxxxxx",
- "value": "TW-CC-II-L01"
}, - {
- "exactType": "FloorLevelIdentity",
- "scope": "BUILDING",
- "scopeId": "BLDGxxxxxxxxxxxxxxx",
- "value": "0"
}, - {
- "exactType": "ExternalIdentity",
- "scope": "ORG",
- "scopeId": "ORG2xxxxxxxxxxx",
- "value": "urn:willowinc:twin:id:TW-DD-II-L01"
}
], - "name": "Floor_1",
- "uniqueID": "a360cf30-c112-40a1-b4b4-f65da82fa9e8",
- "externalID": "FLRPXxxxxxxxxxxxxxxxx",
- "code": "L01",
- "siteID": "104bd33c-a697-4027-b6a6-677e30a53d09",
- "alternateClassification": {
- "brickSchema": {
- "version": "2024-01-03",
- "code": "dtmi:org:brickschema:schema:Brick:Floor;1"
}
}, - "externalIds": {
- "mappingKey": "msrc:///CON5xxxxxxxxxxxxxxxx@willow-source/twin/TW-DD-II-L01"
}, - "area": {
- "$metadata": {
- "$lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00"
}
}
}
}
{- "id": "TW-DD-II-L01",
- "modelId": "dtmi:com:willowinc:Level;1",
- "lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00",
- "contents": {
- "levelNumber": 0,
- "mappedIds": [
- {
- "exactType": "ExternalIdentity",
- "scope": "CONNECTOR",
- "scopeId": "CONxxxxxxxxxxx",
- "value": "TW-CC-II-L01"
}, - {
- "exactType": "FloorLevelIdentity",
- "scope": "BUILDING",
- "scopeId": "BLDGxxxxxxxxxxxxxxx",
- "value": "0"
}, - {
- "exactType": "ExternalIdentity",
- "scope": "ORG",
- "scopeId": "ORG2xxxxxxxxxxx",
- "value": "urn:willowinc:twin:id:TW-DD-II-L01"
}
], - "name": "Floor_1",
- "uniqueID": "a360cf30-c112-40a1-b4b4-f65da82fa9e8",
- "externalID": "FLRPXxxxxxxxxxxxxxxxx",
- "code": "L01",
- "siteID": "104bd33c-a697-4027-b6a6-677e30a53d09",
- "alternateClassification": {
- "brickSchema": {
- "version": "2024-01-03",
- "code": "dtmi:org:brickschema:schema:Brick:Floor;1"
}
}, - "externalIds": {
- "mappingKey": "msrc:///CON5xxxxxxxxxxxxxxxx@willow-source/twin/TW-DD-II-L01"
}, - "area": {
- "$metadata": {
- "$lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00"
}
}
}
}
Target relationship retrieved
Relationship not found
{- "Id": "AHU-1_isFedBy_substance_ChilledWater_Chiller-1",
- "targetId": "Chiller-1",
- "sourceId": "AHU-1",
- "name": "isFedBy",
- "properties": {
- "substance": "ChilledWater"
}
}
Target relationships retrieved.
If Twin is not found.
[- {
- "Id": "AHU-1_isFedBy_substance_ChilledWater_Chiller-1",
- "targetId": "Chiller-1",
- "sourceId": "AHU-1",
- "name": "isFedBy",
- "properties": {
- "substance": "ChilledWater"
}
}
]
Relationships retrieved.
Twin not found.
[- {
- "Id": "AHU-1_isFedBy_substance_ChilledWater_Chiller-1",
- "targetId": "Chiller-1",
- "sourceId": "AHU-1",
- "name": "isFedBy",
- "properties": {
- "substance": "ChilledWater"
}
}
]
Only one relationship between twin T1 and twin T2 with the same name and properties can be present -- if the given relationship already exists, the operation is idempotent. Id of the relationship will be derived by the system and will override the value present in the request.
Instance of DigitalTwinRelationship.
Created or Updated DigitalTwinRelationship.
If provided relationship has empty sourceId, targetId or name.
If sourceId, targetId or name does not exist.
{- "Id": "AHU-1_isFedBy_substance_ChilledWater_Chiller-1",
- "targetId": "Chiller-1",
- "sourceId": "AHU-1",
- "name": "isFedBy",
- "properties": {
- "substance": "ChilledWater"
}
}
{- "Id": "AHU-1_isFedBy_substance_ChilledWater_Chiller-1",
- "targetId": "Chiller-1",
- "sourceId": "AHU-1",
- "name": "isFedBy",
- "properties": {
- "substance": "ChilledWater"
}
}
The Time Series endpoints are used for sending or receiving telemetry data. Once a Capability
twin has been created that represents the time series, the telemetry associated with that twin can be created using either the twin's dtId (aka twinId) or externalId, a timestamp, and a value. Data is transmitted as an array so time series data can be batched and sent within a single request.
Similarly, time series can be retreived for one or more Capability
twins at a time using the twinId(s).
OK
Unauthorized
Forbidden
Not Found
{- "data": {
- "connectorId": "TW-CC-01",
- "twinId": "TW-DD-II-01",
- "externalId": "PNTC4Jm8vXy7bWq9rT5sHkLz2p",
- "sourceTimestamp": "2024-10-01T12:34:56.0000000+00:00",
- "scalarValue": 42,
- "properties": {
- "customerEquipmentId": "X-1234"
}
}, - "continuationToken": "CgAAYQAAAAAAABQ...",
- "errorData": {
- "message": "Error message",
- "ids": [
- "TW-DD-II-02"
]
}
}
OK
Unauthorized
Forbidden
Not Found
[- "string"
]
{- "data": {
- "connectorId": "TW-CC-01",
- "twinId": "TW-DD-II-01",
- "externalId": "PNTC4Jm8vXy7bWq9rT5sHkLz2p",
- "sourceTimestamp": "2024-10-01T12:34:56.0000000+00:00",
- "scalarValue": 42,
- "properties": {
- "customerEquipmentId": "X-1234"
}
}, - "continuationToken": "CgAAYQAAAAAAABQ...",
- "errorData": {
- "message": "Error message",
- "ids": [
- "TW-DD-II-02"
]
}
}
[- {
- "connectorId": "TW-CC-01",
- "twinId": "TW-DD-II-01",
- "externalId": "PNTC4Jm8vXy7bWq9rT5sHkLz2p",
- "trendId": "0d90ca30-190e-4f45-9ea7-52cb529ba9ea",
- "sourceTimestamp": "2024-10-01T12:34:56.0000000+00:00",
- "enqueuedTimestamp": "2024-10-01T12:35:00.0000000+00:00",
- "scalarValue": 42,
- "properties": {
- "customerEquipmentId": "X-1234"
}
}
]
OK
Unauthorized
Forbidden
Not Found
[- "string"
]
[- {
- "connectorId": "TW-CC-01",
- "twinId": "TW-DD-II-01",
- "externalId": "PNTC4Jm8vXy7bWq9rT5sHkLz2p",
- "trendId": "0d90ca30-190e-4f45-9ea7-52cb529ba9ea",
- "sourceTimestamp": "2024-10-01T12:34:56.0000000+00:00",
- "enqueuedTimestamp": "2024-10-01T12:35:00.0000000+00:00",
- "scalarValue": 42,
- "properties": {
- "customerEquipmentId": "X-1234"
}
}
]
Accepted
Bad Request
Unauthorized
Forbidden
[- {
- "connectorId": "TW-CC-01",
- "twinId": "TW-DD-II-01",
- "externalId": "PNTC4Jm8vXy7bWq9rT5sHkLz2p",
- "sourceTimestamp": "2024-10-01T12:34:56.0000000+00:00",
- "scalarValue": 42,
- "properties": {
- "customerEquipmentId": "X-1234"
}
}
]
Insights are issues, opportunities, or knowledge that can help optimize or improve the performance of a building. They can be associated with any twin within Willow and are triggered in real-time by Skills that are running within Willow's Activate Technology and analyzing the incoming time series data.
{- "sortSpecifications": [
- {
- "field": "string",
- "sort": "string"
}
], - "filterSpecifications": [
- {
- "field": "string",
- "operator": "string",
- "value": { }
}
], - "page": 0,
- "pageSize": 0
}
{- "before": 0,
- "after": 0,
- "total": 0,
- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "siteId": "60189e9c-7d12-438c-b9ca-6998d9c364b1",
- "sequenceNumber": "string",
- "equipmentId": "d2a795e1-f645-4e24-bc0a-ab1965048fcc",
- "twinId": "string",
- "twinName": "string",
- "type": "fault",
- "name": "string",
- "description": "string",
- "recommendation": "string",
- "impactScores": [
- {
- "name": "string",
- "fieldId": "string",
- "value": 0,
- "unit": "string",
- "externalId": "string",
- "ruleId": "string"
}
], - "priority": 0,
- "lastStatus": "open",
- "state": "inactive",
- "createdDate": "2019-08-24T14:15:22Z",
- "updatedDate": "2019-08-24T14:15:22Z",
- "occurredDate": "2019-08-24T14:15:22Z",
- "detectedDate": "2019-08-24T14:15:22Z",
- "sourceType": "willow",
- "sourceId": "797f5a94-3689-4ac8-82fd-d749511ea2b2",
- "sourceName": "string",
- "primaryModelId": "string",
- "externalId": "string",
- "externalStatus": "string",
- "externalMetadata": "string",
- "occurrenceCount": 0,
- "createdUserId": "ea7e097f-834f-4fa5-87fc-4730a5fb67fe",
- "ruleId": "string",
- "ruleName": "string",
- "newOccurrence": true,
- "previouslyIgnored": 0,
- "previouslyResolved": 0,
- "floorId": "f4b95b27-8806-47f9-baf2-7b034d2e232f",
- "reported": true,
- "lastResolvedDate": "2019-08-24T14:15:22Z",
- "lastIgnoredDate": "2019-08-24T14:15:22Z",
- "locations": [
- "string"
], - "tags": [
- "string"
]
}
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac",
- "siteId": "60189e9c-7d12-438c-b9ca-6998d9c364b1",
- "sequenceNumber": "string",
- "equipmentId": "d2a795e1-f645-4e24-bc0a-ab1965048fcc",
- "twinId": "string",
- "twinName": "string",
- "type": "fault",
- "name": "string",
- "description": "string",
- "recommendation": "string",
- "impactScores": [
- {
- "name": "string",
- "fieldId": "string",
- "value": 0,
- "unit": "string",
- "externalId": "string",
- "ruleId": "string"
}
], - "priority": 0,
- "lastStatus": "open",
- "state": "inactive",
- "createdDate": "2019-08-24T14:15:22Z",
- "updatedDate": "2019-08-24T14:15:22Z",
- "occurredDate": "2019-08-24T14:15:22Z",
- "detectedDate": "2019-08-24T14:15:22Z",
- "sourceType": "willow",
- "sourceId": "797f5a94-3689-4ac8-82fd-d749511ea2b2",
- "sourceName": "string",
- "primaryModelId": "string",
- "externalId": "string",
- "externalStatus": "string",
- "externalMetadata": "string",
- "occurrenceCount": 0,
- "createdUserId": "ea7e097f-834f-4fa5-87fc-4730a5fb67fe",
- "ruleId": "string",
- "ruleName": "string",
- "newOccurrence": true,
- "previouslyIgnored": 0,
- "previouslyResolved": 0,
- "floorId": "f4b95b27-8806-47f9-baf2-7b034d2e232f",
- "reported": true,
- "lastResolvedDate": "2019-08-24T14:15:22Z",
- "lastIgnoredDate": "2019-08-24T14:15:22Z",
- "locations": [
- "string"
], - "tags": [
- "string"
]
}