Authentication is required prior to accessing the Willow API. Refer to Authentication section above for details.
Willow Public API (v3)
Instance of GetTwinsRequest.
Represents a group of filter specifications. Contains a list of individual filter specifications.
Maximum number of twins to return per request. Minimum is 1 and Maximum is 1000.
- https://{instance}.app.willowinc.com/api/v3/twins
- Payload
- JS
- C#
- Java
- Python
{ "modelFilter": { "modelIds": [ … ], "exactModelMatch": true }, "relationshipFilter": { "relationshipDirection": "Incoming", "relationshipNames": null, "relatedModelFilter": { … } }, "locationFilter": { "locationId": null }, "dateFilter": { "lastUpdatedAfter": null, "lastUpdatedBefore": null }, "propertyFilter": { "field": null, "operator": null, "value": { … }, "filterConditionOperator": "And", "filters": [ … ] }, "ModelFilter": { "ModelIds": [ … ], "ExactModelMatch": true }, "RelationshipFilter": { "RelationshipDirection": "Outgoing", "RelationshipNames": [ … ], "RelatedModelFilter": { … } }, "LocationFilter": { "LocationId": null }, "DateFilter": { "LastUpdatedAfter": "2024-09-23T15:16:03.405Z", "LastUpdatedBefore": "2024-09-23T15:16:03.405Z" }, "PropertyFilter": { "Filters": [ … ], "FilterConditionOperator": "and" }, "Include": { "OutgoingRelationships": true, "IncomingRelationships": true }, "PageSize": 101, "ContinuationToken": null }
Page`1.
Gets or sets the collection of items contained in the response.
{ "content": [ { … } ], "continuationToken": null }
Instance of DigitalTwin.
Timestamp when the twin was last updated in ISO 8601 format.
This field will contain properties and components as defined in the contents section of the DTDL definition of the twin.
- https://{instance}.app.willowinc.com/api/v3/twins
- Payload
- JS
- C#
- Java
- Python
{ "id": "TW-DD-II-L01", "modelId": "dtmi:com:willowinc:Level;1", "lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00", "contents": { "levelNumber": 0, "mappedIds": [ … ], "name": "Floor_1", "uniqueID": "a360cf30-c112-40a1-b4b4-f65da82fa9e8", "externalID": "FLRPXxxxxxxxxxxxxxxxx", "code": "L01", "siteID": "104bd33c-a697-4027-b6a6-677e30a53d09", "alternateClassification": { … }, "externalIds": { … }, "area": { … } } }
Created Twin .
Timestamp when the twin was last updated in ISO 8601 format.
This field will contain properties and components as defined in the contents section of the DTDL definition of the 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": [ … ], "name": "Floor_1", "uniqueID": "a360cf30-c112-40a1-b4b4-f65da82fa9e8", "externalID": "FLRPXxxxxxxxxxxxxxxxx", "code": "L01", "siteID": "104bd33c-a697-4027-b6a6-677e30a53d09", "alternateClassification": { … }, "externalIds": { … }, "area": { … } } }
- https://{instance}.app.willowinc.com/api/v3/twins/{id}
- Payload
- JS
- C#
- Java
- Python
No request payloadTwin information successfully retrieved.
Timestamp when the twin was last updated in ISO 8601 format.
This field will contain properties and components as defined in the contents section of the DTDL definition of the twin.
Incoming relationships
{ "id": "TW-DD-II-L01", "modelId": "dtmi:com:willowinc:Level;1", "lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00", "contents": { "levelNumber": 0, "mappedIds": [ … ], "name": "Floor_1", "uniqueID": "a360cf30-c112-40a1-b4b4-f65da82fa9e8", "externalID": "FLRPXxxxxxxxxxxxxxxxx", "code": "L01", "siteID": "104bd33c-a697-4027-b6a6-677e30a53d09", "alternateClassification": { … }, "externalIds": { … }, "area": { … } }, "incomingRelationships": [ { … } ], "outgoingRelationships": [ { … } ] }
- https://{instance}.app.willowinc.com/api/v3/twins/{id}
- Payload
- JS
- C#
- Java
- Python
[ { "operationType": "Add", "path": null, "op": null, "from": null, "value": { … } } ]
{ "type": null, "title": null, "status": null, "detail": null, "instance": null, "errors": { "property1": [ … ], "property2": [ … ] }, "property1": null, "property2": null }
Request
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.
Array of twin Ids.
- https://{instance}.app.willowinc.com/api/v3/twins/ids
- Payload
- JS
- C#
- Java
- Python
[ "string" ]
Twin information
Timestamp when the twin was last updated in ISO 8601 format.
This field will contain properties and components as defined in the contents section of the DTDL definition of the twin.
Incoming relationships
Outgoing relationships
[ { "id": "TW-DD-II-L01", "modelId": "dtmi:com:willowinc:Level;1", "lastUpdateTime": "2024-08-30T03:49:30.4062816+00:00", "contents": { … }, "incomingRelationships": [ … ], "outgoingRelationships": [ … ] } ]
Request
Retrieves a twin by its ID along with its associated twins as defined in the request. The relationships field in the request is optional. Twins will be returned in the response even if the nested relationships failed to find a twin. Similar to a sql outer join semantics.
Instance of GetTwinGraphRequest.
Graph relationship definition to retrieve the related twins.
- https://{instance}.app.willowinc.com/api/v3/twins/graph
- Payload
- JS
- C#
- Java
- Python
{ "id": "PNT2Uga", "alias": "Twin", "relationships": [ { … }, { … } ] }
Twin Graph Response.
{ "property1": [ { … } ], "property2": [ { … } ] }
- https://{instance}.app.willowinc.com/api/v3/twins/count
- Payload
- JS
- C#
- Java
- Python
{ "modelFilter": { "modelIds": [ … ], "exactModelMatch": true }, "relationshipFilter": { "relationshipDirection": "Incoming", "relationshipNames": null, "relatedModelFilter": { … } }, "locationFilter": { "locationId": null }, "dateFilter": { "lastUpdatedAfter": null, "lastUpdatedBefore": null }, "propertyFilter": { "field": null, "operator": null, "value": { … }, "filterConditionOperator": "And", "filters": [ … ] }, "ModelFilter": { "ModelIds": [ … ], "ExactModelMatch": true }, "RelationshipFilter": { "RelationshipDirection": "Outgoing", "RelationshipNames": [ … ], "RelatedModelFilter": { … } }, "LocationFilter": { "LocationId": null }, "DateFilter": { "LastUpdatedAfter": "2024-09-23T15:16:03.405Z", "LastUpdatedBefore": "2024-09-23T15:16:03.405Z" }, "PropertyFilter": { "Filters": [ … ], "FilterConditionOperator": "and" } }
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).
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.