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

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

List tickets.

Request

Returns a paginated list of tickets. Default page size is 100, maximum is 1000.

Security
oauth2
Body
sortSpecificationsArray of objects or null(SortSpecification)
filterSpecificationsArray of objects or null(FilterSpecification1)
pageinteger or null(int32)
pageSizeinteger or null(int32)
{ "sortSpecifications": [ {} ], "filterSpecifications": [ {} ], "page": 0, "pageSize": 0 }

Responses

Paginated list of tickets.

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

Creates a new ticket.

Request

Security
oauth2
Body

Create ticket request.

summarystring or null

Gets or sets the summary of the ticket.

descriptionstring or null

Gets or sets the description of the ticket.

causestring or null

Gets or sets the cause of the ticket.

solutionstring or null

Gets or sets the solution of the ticket.

twinIdstring or null

Gets or sets the digital twin id associated with the ticket.

notesstring or null

Gets or sets additional notes for the ticket.

latitudenumber or null(double)

Gets or sets the latitude of the ticket location.

longitudenumber or null(double)

Gets or sets the longitude of the ticket location.

insightIdstring or null(uuid)

Gets or sets the InsightId associated with the ticket.

insightNamestring or null

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

diagnosticsArray of objects or null(Insight)

Gets or sets the diagnostics associated with the ticket.

reporterobject(UserProfile)
creatorobject(UserProfile)
assigneeTypestring(AssigneeType)

Specifies the type of assignee for a ticket.

Enum"noAssignee""customerUser""workGroup"
userAssigneeobject(UserProfile)
workgroupAssigneeobject(WorkgroupAssignee)

Represents a workgroup assignee for tickets.

dueDatestring or null(date-time)

Gets or sets the due date of the ticket.

externalCreatedDatestring or null(date-time)

Gets or sets the external created date of the ticket. This field represents the created date of the ticket in an external system.

externalUpdatedDatestring or null(date-time)

Gets or sets the external updated date of the ticket. This field represents the last updated date of the ticket in an external system.

externalIdstring or null

Gets or sets the external id of the ticket. This field represents the id of the ticket in an external system.

externalMetadatastring or null

Gets or sets the external metadata of the ticket.

categoryIdstring or null(uuid)

Gets or sets the category id of the ticket.

jobTypeIdstring or null(uuid)

Gets or sets the job type id of the ticket.

serviceNeededIdstring or null(uuid)

Gets or sets the service needed id of the ticket.

subStatusIdstring or null(uuid)

Gets or sets the sub status id of the ticket.

statusIdstring(uuid)

Gets or sets the status id of the ticket.

priorityIdstring or null(uuid)

Gets or sets the priority id of the ticket.

tasksArray of objects or null(TicketTask)

Gets or sets the list of tasks associated with the ticket.

customPropertiesobject or null

Gets or sets the custom properties of the ticket.

extendableSearchablePropertyKeysArray of strings or null

Gets or sets the list of property keys that can be extended and searched.

recommendationsArray of objects or null(TicketRecommendation)

Gets or sets the list of ticket's recommendations.

ticketCostsArray of objects or null(TicketCost)

Gets or sets the list of ticket costs associated with the ticket.

{ "summary": "string", "description": "string", "cause": "string", "solution": "string", "twinId": "string", "notes": "string", "latitude": 0.1, "longitude": 0.1, "insightId": "e0b109ff-077c-4d58-916e-b128cab16ecb", "insightName": "string", "diagnostics": [ {} ], "reporter": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "email": "string", "phone": "string", "company": "string" }, "creator": { "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": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "dueDate": "2019-08-24T14:15:22Z", "externalCreatedDate": "2019-08-24T14:15:22Z", "externalUpdatedDate": "2019-08-24T14:15:22Z", "externalId": "string", "externalMetadata": "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", "statusId": "e900225c-0629-4e96-be6e-86a17a309645", "priorityId": "a57eab25-838b-40cc-a576-57e4056f1d6c", "tasks": [ {} ], "customProperties": { "property1": "string", "property2": "string" }, "extendableSearchablePropertyKeys": [ "string" ], "recommendations": [ {} ], "ticketCosts": [ {} ] }

Responses

Ticket created.

Bodyapplication/json
idstring(uuid)

Gets or sets the unique identifier for the ticket.

ticketPriorityobject(TicketPriority)
ticketStatusobject(TicketStatus)

Represent the Ticket status dto class.

insightIdstring or null(uuid)

Gets or sets the insight identifier associated with the ticket.

summarystring or null

Gets or sets the summary of the ticket.

descriptionstring or null

Gets or sets the description of the ticket.

causestring or null

Gets or sets the description of the underlying reason or cause associated with this instance.

solutionstring or null

Gets or sets the solution text associated with the ticket.

reporterobject(UserProfile)
assigneeTypestring(AssigneeType)

Specifies the type of assignee for a ticket.

Enum"noAssignee""customerUser""workGroup"
userAssigneeobject(UserProfile)
workgroupAssigneeobject(WorkgroupAssignee)

Represents a workgroup assignee for tickets.

creatorobject(UserProfile)
dueDatestring or null(date-time)

Gets or sets the due date of the ticket.

createdDatestring(date-time)

Gets or sets the date when the ticket was created.

updatedDatestring(date-time)

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

startedDatestring or null(date-time)

Gets or sets the date when the ticket was started.

resolvedDatestring or null(date-time)

Gets or sets the date when the ticket was resolved.

closedDatestring or null(date-time)

Gets or sets the date when the ticket was closed.

sourceTypestring(SourceType)

Specifies the available data source types for queries and operations.

Enum"Adx""AdtQuery""AdtMemory""Acs"
sourceNamestring or null

Gets or sets the name of the source from which the ticket originated.

externalIdstring or null

Gets or sets the external identifier of the ticket.

externalCreatedDatestring or null(date-time)

Gets or sets the date when the ticket was created in an external system.

externalUpdatedDatestring or null(date-time)

Gets or sets the date when the ticket was last updated in an external system.

latitudenumber or null(double)

Gets or sets the latitude of the ticket's location.

longitudenumber or null(double)

Gets or sets the longitude of the ticket's location.

customPropertiesobject or null

Gets or sets the custom properties associated with the ticket.

extendableSearchablePropertyKeysArray of strings or null

Gets or sets the list of extendable searchable property keys associated with the ticket.

scheduledDatestring or null(date-time)

Gets or sets the scheduled date for the ticket.

occurrenceinteger(int32)

Gets or sets the occurrence count of the ticket.

locationsArray of objects or null(Location)

Gets or sets the list of ticket locations.

twinobject(BaseTwin)

Represent the base twin.

recommendationsArray of objects or null(TicketRecommendation)

Gets or sets the list of ticket's recommendations.

categoryobject(IdName)
jobTypeobject(IdName)
serviceNeededobject(IdName)
subStatusobject(IdName)
commentsArray of objects or null(Comment)

Gets or sets the comments associated with the ticket.

attachmentsArray of objects or null(AttachmentDetails)

Gets or sets the attachments associated with the ticket.

ticketCostsArray of objects or null(TicketCost)

Gets or sets the list of ticket costs associated with the ticket.

Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "ticketPriority": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "priorityLevel": "urgent" }, "ticketStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "tab": "string", "color": "string" }, "insightId": "e0b109ff-077c-4d58-916e-b128cab16ecb", "summary": "string", "description": "string", "cause": "string", "solution": "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": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "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": "Adx", "sourceName": "string", "externalId": "string", "externalCreatedDate": "2019-08-24T14:15:22Z", "externalUpdatedDate": "2019-08-24T14:15:22Z", "latitude": 0.1, "longitude": 0.1, "customProperties": { "property1": "string", "property2": "string" }, "extendableSearchablePropertyKeys": [ "string" ], "scheduledDate": "2019-08-24T14:15:22Z", "occurrence": 0, "locations": [ {} ], "twin": { "id": "string", "name": "string", "modelId": "string" }, "recommendations": [ {} ], "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "jobType": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "serviceNeeded": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "subStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "comments": [ {} ], "attachments": [ {} ], "ticketCosts": [ {} ] }

Retrieves a ticket by its Id.

Request

Security
oauth2
Path
ticketIdstring(uuid)required
No request payload

Responses

Ticket found.

Bodyapplication/json
idstring(uuid)

Gets or sets the unique identifier for the ticket.

ticketPriorityobject(TicketPriority)
ticketStatusobject(TicketStatus)

Represent the Ticket status dto class.

insightIdstring or null(uuid)

Gets or sets the insight identifier associated with the ticket.

summarystring or null

Gets or sets the summary of the ticket.

descriptionstring or null

Gets or sets the description of the ticket.

causestring or null

Gets or sets the description of the underlying reason or cause associated with this instance.

solutionstring or null

Gets or sets the solution text associated with the ticket.

reporterobject(UserProfile)
assigneeTypestring(AssigneeType)

Specifies the type of assignee for a ticket.

Enum"noAssignee""customerUser""workGroup"
userAssigneeobject(UserProfile)
workgroupAssigneeobject(WorkgroupAssignee)

Represents a workgroup assignee for tickets.

creatorobject(UserProfile)
dueDatestring or null(date-time)

Gets or sets the due date of the ticket.

createdDatestring(date-time)

Gets or sets the date when the ticket was created.

updatedDatestring(date-time)

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

startedDatestring or null(date-time)

Gets or sets the date when the ticket was started.

resolvedDatestring or null(date-time)

Gets or sets the date when the ticket was resolved.

closedDatestring or null(date-time)

Gets or sets the date when the ticket was closed.

sourceTypestring(SourceType)

Specifies the available data source types for queries and operations.

Enum"Adx""AdtQuery""AdtMemory""Acs"
sourceNamestring or null

Gets or sets the name of the source from which the ticket originated.

externalIdstring or null

Gets or sets the external identifier of the ticket.

externalCreatedDatestring or null(date-time)

Gets or sets the date when the ticket was created in an external system.

externalUpdatedDatestring or null(date-time)

Gets or sets the date when the ticket was last updated in an external system.

latitudenumber or null(double)

Gets or sets the latitude of the ticket's location.

longitudenumber or null(double)

Gets or sets the longitude of the ticket's location.

customPropertiesobject or null

Gets or sets the custom properties associated with the ticket.

extendableSearchablePropertyKeysArray of strings or null

Gets or sets the list of extendable searchable property keys associated with the ticket.

scheduledDatestring or null(date-time)

Gets or sets the scheduled date for the ticket.

occurrenceinteger(int32)

Gets or sets the occurrence count of the ticket.

locationsArray of objects or null(Location)

Gets or sets the list of ticket locations.

twinobject(BaseTwin)

Represent the base twin.

recommendationsArray of objects or null(TicketRecommendation)

Gets or sets the list of ticket's recommendations.

categoryobject(IdName)
jobTypeobject(IdName)
serviceNeededobject(IdName)
subStatusobject(IdName)
commentsArray of objects or null(Comment)

Gets or sets the comments associated with the ticket.

attachmentsArray of objects or null(AttachmentDetails)

Gets or sets the attachments associated with the ticket.

ticketCostsArray of objects or null(TicketCost)

Gets or sets the list of ticket costs associated with the ticket.

Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "ticketPriority": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "priorityLevel": "urgent" }, "ticketStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "tab": "string", "color": "string" }, "insightId": "e0b109ff-077c-4d58-916e-b128cab16ecb", "summary": "string", "description": "string", "cause": "string", "solution": "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": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "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": "Adx", "sourceName": "string", "externalId": "string", "externalCreatedDate": "2019-08-24T14:15:22Z", "externalUpdatedDate": "2019-08-24T14:15:22Z", "latitude": 0.1, "longitude": 0.1, "customProperties": { "property1": "string", "property2": "string" }, "extendableSearchablePropertyKeys": [ "string" ], "scheduledDate": "2019-08-24T14:15:22Z", "occurrence": 0, "locations": [ {} ], "twin": { "id": "string", "name": "string", "modelId": "string" }, "recommendations": [ {} ], "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "jobType": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "serviceNeeded": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "subStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "comments": [ {} ], "attachments": [ {} ], "ticketCosts": [ {} ] }

Applies a JSON Patch document to update specific properties of a ticket.

Request

This endpoint supports partial updates to a ticket using a JSON Patch document. The number of operations in the patch document must not exceed the number of updatable properties in the WorkflowCore.Controllers.Request.PatchTicketRequest model. Additionally, only "replace" operations are allowed.

Security
oauth2
Path
ticketIdstring(uuid)required

The unique identifier of the ticket to be updated.

Body

A Microsoft.AspNetCore.JsonPatch.JsonPatchDocument`1 containing the operations to apply to the ticket. Only "replace" operations are supported.

Array [
opstring

The operation to be performed.

pathstring

A JSON Pointer path to the target location.

valueobject

The value to be used in the operation.

]
[ { "op": "string", "path": "string", "value": {} } ]

Responses

Ticket updated.

Bodyapplication/json
idstring(uuid)

Gets or sets the unique identifier for the ticket.

ticketPriorityobject(TicketPriority)
ticketStatusobject(TicketStatus)

Represent the Ticket status dto class.

insightIdstring or null(uuid)

Gets or sets the insight identifier associated with the ticket.

summarystring or null

Gets or sets the summary of the ticket.

descriptionstring or null

Gets or sets the description of the ticket.

causestring or null

Gets or sets the description of the underlying reason or cause associated with this instance.

solutionstring or null

Gets or sets the solution text associated with the ticket.

reporterobject(UserProfile)
assigneeTypestring(AssigneeType)

Specifies the type of assignee for a ticket.

Enum"noAssignee""customerUser""workGroup"
userAssigneeobject(UserProfile)
workgroupAssigneeobject(WorkgroupAssignee)

Represents a workgroup assignee for tickets.

creatorobject(UserProfile)
dueDatestring or null(date-time)

Gets or sets the due date of the ticket.

createdDatestring(date-time)

Gets or sets the date when the ticket was created.

updatedDatestring(date-time)

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

startedDatestring or null(date-time)

Gets or sets the date when the ticket was started.

resolvedDatestring or null(date-time)

Gets or sets the date when the ticket was resolved.

closedDatestring or null(date-time)

Gets or sets the date when the ticket was closed.

sourceTypestring(SourceType)

Specifies the available data source types for queries and operations.

Enum"Adx""AdtQuery""AdtMemory""Acs"
sourceNamestring or null

Gets or sets the name of the source from which the ticket originated.

externalIdstring or null

Gets or sets the external identifier of the ticket.

externalCreatedDatestring or null(date-time)

Gets or sets the date when the ticket was created in an external system.

externalUpdatedDatestring or null(date-time)

Gets or sets the date when the ticket was last updated in an external system.

latitudenumber or null(double)

Gets or sets the latitude of the ticket's location.

longitudenumber or null(double)

Gets or sets the longitude of the ticket's location.

customPropertiesobject or null

Gets or sets the custom properties associated with the ticket.

extendableSearchablePropertyKeysArray of strings or null

Gets or sets the list of extendable searchable property keys associated with the ticket.

scheduledDatestring or null(date-time)

Gets or sets the scheduled date for the ticket.

occurrenceinteger(int32)

Gets or sets the occurrence count of the ticket.

locationsArray of objects or null(Location)

Gets or sets the list of ticket locations.

twinobject(BaseTwin)

Represent the base twin.

recommendationsArray of objects or null(TicketRecommendation)

Gets or sets the list of ticket's recommendations.

categoryobject(IdName)
jobTypeobject(IdName)
serviceNeededobject(IdName)
subStatusobject(IdName)
commentsArray of objects or null(Comment)

Gets or sets the comments associated with the ticket.

attachmentsArray of objects or null(AttachmentDetails)

Gets or sets the attachments associated with the ticket.

ticketCostsArray of objects or null(TicketCost)

Gets or sets the list of ticket costs associated with the ticket.

Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "ticketPriority": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "priorityLevel": "urgent" }, "ticketStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "tab": "string", "color": "string" }, "insightId": "e0b109ff-077c-4d58-916e-b128cab16ecb", "summary": "string", "description": "string", "cause": "string", "solution": "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": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "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": "Adx", "sourceName": "string", "externalId": "string", "externalCreatedDate": "2019-08-24T14:15:22Z", "externalUpdatedDate": "2019-08-24T14:15:22Z", "latitude": 0.1, "longitude": 0.1, "customProperties": { "property1": "string", "property2": "string" }, "extendableSearchablePropertyKeys": [ "string" ], "scheduledDate": "2019-08-24T14:15:22Z", "occurrence": 0, "locations": [ {} ], "twin": { "id": "string", "name": "string", "modelId": "string" }, "recommendations": [ {} ], "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "jobType": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "serviceNeeded": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "subStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "comments": [ {} ], "attachments": [ {} ], "ticketCosts": [ {} ] }

Retrieves a ticket attachment by its Id.

Request

Security
oauth2
Path
ticketIdstring(uuid)required

Ticket Id.

attachmentIdstring(uuid)required

Attachment Id.

No request payload

Responses

OK

Bodyapplication/json
string(binary)
Response
application/json
"string"

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