Skip to content

Willow Public API (v3)

Download OpenAPI description
Languages
Servers
https://{instance}.app.willowinc.com/api/v3

OAuth2

Authentication is required prior to accessing the Willow API. Refer to Authentication section above for details.

Operations

Models

Models endpoints are used for getting the models and their details.

Operations

Twins

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.

Operations

Relationships

Relationship endpoints enable creating, updating, and fetching relationship details.

Operations

Time Series

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).

Operations

Insights

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.

Operations

List insights. Pagination applies only to root elements (ScenarioId == null). When fetching a page, include all children of those roots. Search/filtering applies to both parent and children: If a parent matches, return the parent with all its children. If a child matches, return the child and its parent (even if the parent wouldn’t match by itself).

Request

Returns a paginated list insight. Default page size is 10.

Security
oauth2
Query
addFloorboolean

When true, the response includes the floorId.

Default false
Bodyrequired

Filter and sort specifications.

sortSpecificationsArray of objects(SortSpecification)
filterSpecificationsArray of objects(FilterSpecification)
pagenull or integer(int32)
pageSizenull or integer(int32)
{ "sortSpecifications": [ {} ], "filterSpecifications": [ {} ], "page": null, "pageSize": null }

Responses

A paginated list of insights.

Bodyapplication/json
beforeinteger(int32)
afterinteger(int32)
totalinteger(int32)
itemsArray of objects(Insight)
Response
application/json
{ "before": 0, "after": 0, "total": 0, "items": [ {} ] }

Retrieve an insight.

Request

Security
oauth2
Path
insightIdstring(uuid)required

Id of the insight.

Query
ignoreQueryFiltersboolean

Ignore global filter.

Default true
No request payload

Responses

OK

Bodyapplication/json
idstring(uuid)

Gets or sets the unique identifier of the insight.

customerIdstring(uuid)

Gets or sets the unique identifier of the customer associated with the insight.

siteIdstring(uuid)

Gets or sets the unique identifier of the site associated with the insight.

sequenceNumbernull or string

Gets or sets the sequence number of the insight.

equipmentIdnull or string(uuid)

Gets or sets the unique identifier of the equipment associated with the insight.

twinIdnull or string

Gets or sets the twin identifier of the insight.

twinNamenull or string

Gets or sets the name of the twin associated with the insight.

insightTypeany

Gets or sets the type of the insight (standard or scenario).

Enum"standard""scenario"
categoryany

Gets or sets the category of the insight.

Enum"fault""energy""alert""note""goldenStandard""infrastructure""integrityKpi""energyKpi""edgeDevice""dataQuality"
namenull or string

Gets or sets the name of the insight.

descriptionnull or string

Gets or sets the description of the insight.

recommendationnull or string

Gets or sets the recommendation for the insight.

impactScoresArray of objects or null(ImpactScore)

Gets or sets the impact scores associated with the insight.

priorityinteger(int32)

Gets or sets the priority of the insight.

lastStatusany

Gets or sets the last status of the insight.

Enum"open""ignored""inProgress""resolved""new""deleted""readyToResolve"
stateany

Gets or sets the state of the insight.

Enum"inactive""active""disabled""insufficientData""archived"
createdDatestring(date-time)

Gets or sets the date when the insight was created.

updatedDatestring(date-time)

Gets or sets the date when the insight was last updated.

occurredDatestring(date-time)

Gets or sets the date when the insight occurred.

detectedDatestring(date-time)

Gets or sets the date when the insight was detected.

sourceTypeany

Gets or sets the source type of the insight.

Enum"willow""app""inspection"
sourceIdnull or string(uuid)

Gets or sets the unique identifier of the source associated with the insight.

sourceNamenull or string

Gets or sets the name of the source associated with the insight.

primaryModelIdnull or string

Gets or sets the primary model identifier of the insight.

externalIdnull or string

Gets or sets the external identifier of the insight.

externalStatusnull or string

Gets or sets the external status of the insight.

externalMetadatanull or string

Gets or sets the external metadata of the insight.

occurrenceCountinteger(int32)

Gets or sets the occurrence count of the insight.

createdUserIdnull or string(uuid)

Gets or sets the unique identifier of the user who created the insight.

ruleIdnull or string

Gets or sets the rule identifier associated with the insight.

ruleNamenull or string

Gets or sets the rule name associated with the insight.

newOccurrenceboolean

Gets or sets a value indicating whether the insight is a new occurrence.

previouslyIgnoredinteger(int32)

Gets or sets the count of times the insight was previously ignored.

previouslyResolvedinteger(int32)

Gets or sets the count of times the insight was previously resolved.

floorIdnull or string(uuid)

Gets or sets the unique identifier of the floor associated with the insight.

reportedboolean

Gets or sets a value indicating whether the insight has been reported.

commentCountinteger(int32)

Gets or sets the comment count for the insight.

lastResolvedDatenull or string(date-time)

Gets or sets the date when the insight was last resolved.

lastIgnoredDatenull or string(date-time)

Gets or sets the date when the insight was last ignored.

locationDetailsArray of objects or null(Location)

Gets or sets the location details, including twin ID, name, and model ID.

tagsArray of strings or null

Gets or sets the tags associated with the insight.

ignoreUntilnull or string(date-time)

Gets or sets the ignore expiry date for the insight.

openTicketCountinteger(int32)

Gets or sets the number of open tickets for the insight.

completedTicketCountinteger(int32)

Gets or sets the number of Completed tickets for the insight.

closedTicketCountinteger(int32)

Gets or sets the number of closed tickets for the insight.

ticketClosedDatenull or string(date-time)

Gets or sets the ticket closed date.

ticketCompletedDatenull or string(date-time)

Gets or sets the ticket completed date.

secondaryTwinsArray of objects or null(TwinSummary)

Gets or sets the secondary twins "secondary components" of the insight.

recommendationsArray of objects or null(InsightRecommendation)

Gets or sets the recommendations of the insight.

dependencyCountinteger(int32)

Gets or sets the number of insight's dependencies.

actionStatusany

Gets or sets the action status of the insight.

Enum"needsAction""inProgress""unsuccessfullyActioned""successfullyActioned"
scenarioIdnull or string(uuid)

Gets or sets the insights parent scenario id.

scenarioNamenull or string

Gets or sets the insights parent scenario name.

firstExecutedCommandDatenull or string(date-time)

Gets or sets the first executed command date for the insight.

typeanyDeprecated

Gets or sets the type of the insight.

Enum"fault""energy""alert""note""goldenStandard""infrastructure""integrityKpi""energyKpi""edgeDevice""dataQuality"
locationsArray of strings or nullDeprecated

Gets or sets the locations associated with the insight.

isDiagnosticsDatabooleanDeprecated

Gets or sets a value indicating whether the insight contains diagnostics data.

Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "customerId": "87d8e330-2878-4742-a86f-dbbb3bf522ac", "siteId": "60189e9c-7d12-438c-b9ca-6998d9c364b1", "sequenceNumber": null, "equipmentId": null, "twinId": null, "twinName": null, "type": "fault", "insightType": "standard", "category": "fault", "name": null, "description": null, "recommendation": null, "impactScores": null, "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": null, "sourceName": null, "primaryModelId": null, "externalId": null, "externalStatus": null, "externalMetadata": null, "occurrenceCount": 0, "createdUserId": null, "ruleId": null, "ruleName": null, "newOccurrence": true, "previouslyIgnored": 0, "previouslyResolved": 0, "floorId": null, "reported": true, "commentCount": 0, "lastResolvedDate": null, "lastIgnoredDate": null, "locations": null, "locationDetails": null, "tags": null, "isDiagnosticsData": true, "ignoreUntil": null, "openTicketCount": 0, "completedTicketCount": 0, "closedTicketCount": 0, "ticketClosedDate": null, "ticketCompletedDate": null, "secondaryTwins": null, "recommendations": null, "dependencyCount": 0, "actionStatus": "needsAction", "scenarioId": null, "scenarioName": null, "firstExecutedCommandDate": null }

Events

Events endpoints enable creating, updating, and deleting discrete occurrences such as Weather Forecast, Calendar events etc.

Operations

Tickets

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.

Operations

Ticket Metadata

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.

Operations