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.
Unauthorized: You do not have permission to access this twin.
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": "2025-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"
}
]
}
Unauthorized: You do not have permission to access this twin.
Twin not found with the supplied Id.
[- {
- "operationType": "Add",
- "path": "string",
- "op": "string",
- "from": "string",
- "value": {
- "property1": null,
- "property2": null
}
}
]
{- "type": "string",
- "title": "string",
- "status": 0,
- "detail": "string",
- "instance": "string",
- "property1": null,
- "property2": null,
- "errors": {
- "property1": [
- "string"
], - "property2": [
- "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
Unauthorized: You do not have permission to access these twins.
Twin not found.
[- "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": "2025-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"
}
]
}
]
GetTwinGraphRequest.Relationships field 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.
Twin Graph Response.
Unauthorized: You do not have permission to access this twin.
Twin not found.
{- "id": "PNT2Uga",
- "alias": "Twin",
- "relationships": [
- {
- "alias": "Components",
- "relationshipNames": [
- "isPartOf"
], - "modelNames": [
- "dtmi:com:willowinc:Fan;1"
], - "direction": "Incoming",
- "relationship": {
- "alias": "ComponentPoints",
- "relationshipNames": [
- "isCapabilityOf"
], - "modelNames": [ ],
- "direction": "Incoming",
- "relationship": { }
}
}, - {
- "alias": "TwinPoints",
- "relationshipNames": [
- "isCapabilityOf"
], - "modelNames": [ ],
- "direction": "Incoming",
- "relationship": { }
}
]
}
{- "property1": [
- {
- "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": "2025-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"
}
]
}
], - "property2": [
- {
- "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": "2025-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": [
- "string"
], - "exactModelMatch": true
}, - "relationshipFilter": {
- "relationshipDirection": "Incoming",
- "relationshipNames": [
- "isPartOf"
], - "relatedModelFilter": {
- "modelIds": [
- "string"
], - "exactModelMatch": true
}
}, - "locationFilter": {
- "locationId": "string"
}, - "dateFilter": {
- "lastUpdatedAfter": "2019-08-24T14:15:22Z",
- "lastUpdatedBefore": "2019-08-24T14:15:22Z"
}, - "propertyFilter": {
- "field": "string",
- "operator": "string",
- "value": {
- "property1": null,
- "property2": null
}, - "filterConditionOperator": "And",
- "filters": [
- null
]
}, - "ModelFilter": {
- "ModelIds": [
- "dtmi:com:willowinc:Room;1"
], - "ExactModelMatch": true
}, - "RelationshipFilter": {
- "RelationshipDirection": "Outgoing",
- "RelationshipNames": [
- "isPartOf",
- "isDocumentOf",
- "isCapabilityOf",
- "locatedIn",
- "hostedBy",
- "includedIn",
- "servedBy"
], - "RelatedModelFilter": {
- "ModelIds": [
- "dtmi:com:willowinc:Level;1"
], - "ExactModelMatch": true
}
}, - "LocationFilter": {
- "LocationId": null
}, - "DateFilter": {
- "LastUpdatedAfter": "2024-09-23T15:16:03.4050000+00:00",
- "LastUpdatedBefore": "2024-09-23T15:16:03.4050000+00:00"
}, - "PropertyFilter": {
- "Filters": [
- {
- "Field": "externalID",
- "Operator": "in",
- "Value": [
- "ExX12345"
]
}
], - "FilterConditionOperator": "and"
}, - "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": "2025-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": "2025-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": "2025-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"
}
}
}
}
object (RequestModelFilter) Model Filter Class for Get Twins Request. | |
object (RequestRelationshipFilter) Get Twins Request Relationship Filter | |
object (RequestLocationFilter) Location Filter Class for Get Twins Request. | |
object (RequestDateFilter) Date Filter Class for Get Twins Request. | |
object (RequestPropertyFilter) Represents a group of filter specifications. Contains a list of individual filter specifications. |
{- "modelFilter": {
- "modelIds": [
- "string"
], - "exactModelMatch": true
}, - "relationshipFilter": {
- "relationshipDirection": "Incoming",
- "relationshipNames": [
- "isPartOf"
], - "relatedModelFilter": {
- "modelIds": [
- "string"
], - "exactModelMatch": true
}
}, - "locationFilter": {
- "locationId": "string"
}, - "dateFilter": {
- "lastUpdatedAfter": "2019-08-24T14:15:22Z",
- "lastUpdatedBefore": "2019-08-24T14:15:22Z"
}, - "propertyFilter": {
- "field": "string",
- "operator": "string",
- "value": {
- "property1": null,
- "property2": null
}, - "filterConditionOperator": "And",
- "filters": [
- null
]
}, - "ModelFilter": {
- "ModelIds": [
- "dtmi:com:willowinc:Room;1"
], - "ExactModelMatch": true
}, - "RelationshipFilter": {
- "RelationshipDirection": "Outgoing",
- "RelationshipNames": [
- "isPartOf",
- "isDocumentOf",
- "isCapabilityOf",
- "locatedIn",
- "hostedBy",
- "includedIn",
- "servedBy"
], - "RelatedModelFilter": {
- "ModelIds": [
- "dtmi:com:willowinc:Level;1"
], - "ExactModelMatch": true
}
}, - "LocationFilter": {
- "LocationId": null
}, - "DateFilter": {
- "LastUpdatedAfter": "2024-09-23T15:16:03.4050000+00:00",
- "LastUpdatedBefore": "2024-09-23T15:16:03.4050000+00:00"
}, - "PropertyFilter": {
- "Filters": [
- {
- "Field": "externalID",
- "Operator": "=",
- "Value": "ExX12345"
}
], - "FilterConditionOperator": "and"
}
}
0
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.
Relationship entity already exists for create relationship calls. (Request will be considered as Create if Id is string empty) or Attempted to update a relationship field that matches another already existing relationship causing conflict.
{- "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).
{- "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"
}, - "dataQuality": {
- "offline": false,
- "valueOutOfRange": false,
- "sparse": false,
- "flatline": false,
- "delayed": false
}
}
], - "continuationToken": "CgAAYQAAAAAAABQ...",
- "errorData": {
- "message": "Error message",
- "ids": [
- "TW-DD-II-02"
]
}
}
[- "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"
}, - "dataQuality": {
- "offline": false,
- "valueOutOfRange": false,
- "sparse": false,
- "flatline": false,
- "delayed": false
}
}
], - "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"
}, - "dataQuality": {
- "offline": false,
- "valueOutOfRange": false,
- "sparse": false,
- "flatline": false,
- "delayed": false
}
}
]
[- "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"
}, - "dataQuality": {
- "offline": false,
- "valueOutOfRange": false,
- "sparse": false,
- "flatline": false,
- "delayed": false
}
}
]
Accepted
Bad Request
[- {
- "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.
{- "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,
- "commentCount": 0,
- "lastResolvedDate": "2019-08-24T14:15:22Z",
- "lastIgnoredDate": "2019-08-24T14:15:22Z",
- "locations": [
- "string"
], - "locationDetails": [
- {
- "id": "string",
- "name": "string",
- "modelId": "string"
}
], - "tags": [
- "string"
], - "isDiagnosticsData": true,
- "ignoreUntil": "2019-08-24T14:15:22Z",
- "openTicketCount": 0,
- "completedTicketCount": 0,
- "closedTicketCount": 0,
- "ticketClosedDate": "2019-08-24T14:15:22Z",
- "secondaryTwins": [
- {
- "id": "string",
- "name": "string",
- "modelId": "string",
- "eTag": "string"
}
]
}
Returns a paginated list tickets. Default page size is 10.
OK
{- "sortSpecifications": [
- {
- "field": "string",
- "sort": "string"
}
], - "filterSpecifications": [
- {
- "field": "string",
- "operator": "string",
- "value": {
- "property1": null,
- "property2": null
}, - "filterConditionOperator": "And"
}
], - "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,
- "commentCount": 0,
- "lastResolvedDate": "2019-08-24T14:15:22Z",
- "lastIgnoredDate": "2019-08-24T14:15:22Z",
- "locations": [
- "string"
], - "locationDetails": [
- {
- "id": "string",
- "name": "string",
- "modelId": "string"
}
], - "tags": [
- "string"
], - "isDiagnosticsData": true,
- "ignoreUntil": "2019-08-24T14:15:22Z",
- "openTicketCount": 0,
- "completedTicketCount": 0,
- "closedTicketCount": 0,
- "ticketClosedDate": "2019-08-24T14:15:22Z",
- "secondaryTwins": [
- {
- "id": "string",
- "name": "string",
- "modelId": "string",
- "eTag": "string"
}
]
}
]
}
Events endpoints enable creating, updating, and deleting discrete occurrences such as Weather Forecast, Calendar events etc.
{- "sortSpecifications": [
- {
- "field": "string",
- "sort": "string"
}
], - "filterSpecifications": [
- {
- "field": "string",
- "operator": "string",
- "value": {
- "property1": null,
- "property2": null
}, - "filterConditionOperator": "And"
}
], - "page": 0,
- "pageSize": 0
}
{- "before": 0,
- "after": 0,
- "total": 0,
- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "eventTypeId": 0,
- "eventSourceId": "string",
- "externalId": "string",
- "payload": "string",
- "payloadVersion": "string",
- "scalarValue": 0,
- "twinId": "string",
- "locations": "string",
- "createdDate": "2019-08-24T14:15:22Z",
- "lastModifiedDate": "2019-08-24T14:15:22Z"
}
]
}
The event object to be created.
Created
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "eventTypeId": 0,
- "eventSourceId": "string",
- "externalId": "string",
- "payload": "string",
- "payloadVersion": "string",
- "scalarValue": 0,
- "twinId": "string",
- "locations": "string",
- "createdDate": "2019-08-24T14:15:22Z",
- "lastModifiedDate": "2019-08-24T14:15:22Z"
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "eventTypeId": 0,
- "eventSourceId": "string",
- "externalId": "string",
- "payload": "string",
- "payloadVersion": "string",
- "scalarValue": 0,
- "twinId": "string",
- "locations": "string",
- "createdDate": "2019-08-24T14:15:22Z",
- "lastModifiedDate": "2019-08-24T14:15:22Z"
}
A collection of Willow.Events.Entities.Event objects to be created.
Created
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "description": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "eventTypeId": 0,
- "eventSourceId": "string",
- "externalId": "string",
- "payload": "string",
- "payloadVersion": "string",
- "scalarValue": 0,
- "twinId": "string",
- "locations": "string",
- "createdDate": "2019-08-24T14:15:22Z",
- "lastModifiedDate": "2019-08-24T14:15:22Z"
}
]
This API group is in pre-release and may change without notice. Use with caution. Breaking changes may occur as development continues.
Tickets endpoints enable creating, updating and retrieving Tickets.
Returns a paginated list of tickets. Default page size is 100, maximum is 1000.
OK
{- "sortSpecifications": [
- {
- "field": "string",
- "sort": "string"
}
], - "filterSpecifications": [
- {
- "field": "string",
- "operator": "string",
- "value": {
- "property1": null,
- "property2": null
}, - "filterConditionOperator": "And"
}
], - "page": 0,
- "pageSize": 0
}
{- "before": 0,
- "after": 0,
- "total": 0,
- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "priority": "string",
- "status": "string",
- "issueType": "noIssue",
- "twinId": "string",
- "twinName": "string",
- "insightId": "e0b109ff-077c-4d58-916e-b128cab16ecb",
- "summary": "string",
- "description": "string",
- "reporter": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "email": "string",
- "phone": "string",
- "company": "string"
}, - "assigneeType": "noAssignee",
- "userAssignee": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "email": "string",
- "phone": "string",
- "company": "string"
}, - "workgroupAssignee": {
- "name": "string"
}, - "creator": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "email": "string",
- "phone": "string",
- "company": "string"
}, - "dueDate": "2019-08-24T14:15:22Z",
- "createdDate": "2019-08-24T14:15:22Z",
- "updatedDate": "2019-08-24T14:15:22Z",
- "startedDate": "2019-08-24T14:15:22Z",
- "resolvedDate": "2019-08-24T14:15:22Z",
- "closedDate": "2019-08-24T14:15:22Z",
- "sourceType": "willow",
- "sourceName": "string",
- "externalId": "string",
- "externalCreatedDate": "2019-08-24T14:15:22Z",
- "externalUpdatedDate": "2019-08-24T14:15:22Z",
- "latitude": 0,
- "longitude": 0,
- "customProperties": {
- "property1": "string",
- "property2": "string"
}, - "extendableSearchablePropertyKeys": [
- "string"
], - "scheduledDate": "2019-08-24T14:15:22Z",
- "occurrence": 0,
- "locations": [
- {
- "id": "string",
- "name": "string",
- "modelId": "string"
}
], - "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0",
- "jobTypeId": "e7fed64c-d7a0-4b92-b323-987c8904a687",
- "serviceNeededId": "1aa099e5-6900-4be9-91d2-38308a317250",
- "subStatusId": "c9b6af8c-39fe-4426-a105-7343d1ed54d3"
}
]
}
This API group is in pre-release and may change without notice. Use with caution. Breaking changes may occur as development continues.
Ticket Metadata endpoints enable creating, updating and retrieving Ticket Metadata.
Returns a paginated list of the possible categories that a ticket can have.
OK
{- "sortSpecifications": [
- {
- "field": "string",
- "sort": "string"
}
], - "filterSpecifications": [
- {
- "field": "string",
- "operator": "string",
- "value": {
- "property1": null,
- "property2": null
}, - "filterConditionOperator": "And"
}
], - "page": 0,
- "pageSize": 0
}
{- "before": 0,
- "after": 0,
- "total": 0,
- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "isActive": true,
- "locations": [
- "string"
]
}
]
}
{- "name": "string",
- "locations": [
- "string"
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "isActive": true,
- "locations": [
- "string"
]
}
No Content
Bad Request
Not Found
Error
{- "name": "string",
- "isActive": true,
- "locations": [
- "string"
]
}
{- "type": "string",
- "title": "string",
- "status": 0,
- "detail": "string",
- "instance": "string",
- "property1": null,
- "property2": null
}
Returns a paginated list of the possible job types that a ticket can have.
OK
{- "sortSpecifications": [
- {
- "field": "string",
- "sort": "string"
}
], - "filterSpecifications": [
- {
- "field": "string",
- "operator": "string",
- "value": {
- "property1": null,
- "property2": null
}, - "filterConditionOperator": "And"
}
], - "page": 0,
- "pageSize": 0
}
{- "before": 0,
- "after": 0,
- "total": 0,
- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "isActive": true
}
]
}
No Content
Bad Request
Not Found
Error
{- "name": "string",
- "isActive": true
}
{- "type": "string",
- "title": "string",
- "status": 0,
- "detail": "string",
- "instance": "string",
- "property1": null,
- "property2": null
}
Returns a paginated list of the possible services needed that a ticket can have.
OK
{- "sortSpecifications": [
- {
- "field": "string",
- "sort": "string"
}
], - "filterSpecifications": [
- {
- "field": "string",
- "operator": "string",
- "value": {
- "property1": null,
- "property2": null
}, - "filterConditionOperator": "And"
}
], - "page": 0,
- "pageSize": 0
}
{- "before": 0,
- "after": 0,
- "total": 0,
- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0",
- "locations": [
- "string"
], - "isActive": true
}
]
}
{- "name": "string",
- "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0",
- "locations": [
- "string"
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0",
- "locations": [
- "string"
], - "isActive": true
}
No Content
Bad Request
Not Found
Error
{- "name": "string",
- "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0",
- "isActive": true,
- "locations": [
- "string"
]
}
{- "type": "string",
- "title": "string",
- "status": 0,
- "detail": "string",
- "instance": "string",
- "property1": null,
- "property2": null
}