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

Retrieves a paginated list of tickets based on the batch request

Request

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

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

Responses

Paginated list of tickets.

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

Creates a new ticket

Request

Security
oauth2
Bodyrequired

Create ticket request.

summarynull or string

Gets or sets the summary of the ticket.

descriptionnull or string

Gets or sets the description of the ticket.

causenull or string

Gets or sets the cause of the ticket.

solutionnull or string

Gets or sets the solution of the ticket.

twinIdnull or string

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

notesnull or string

Gets or sets additional notes for the ticket.

latitudenull or number(double)

Gets or sets the latitude of the ticket location.

longitudenull or number(double)

Gets or sets the longitude of the ticket location.

insightIdnull or string(uuid)

Gets or sets the InsightId associated with the ticket.

insightNamenull or string

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

Gets or sets the reporter of the ticket.

creatorobject

Gets or sets the creator of the ticket.

assigneeTypeany

Gets or sets the type of the assignee.

Enum"noAssignee""customerUser""workGroup"
userAssigneeobject

Gets or sets the assignee of the ticket. This field is required when AssigneeType is CustomerUser.

workgroupAssigneeobject

Gets or sets the workgroup assignee of the ticket. This field is required when AssigneeType is WorkGroup.

dueDatenull or string(date-time)

Gets or sets the due date of the ticket.

closedDatenull or string(date-time)

Gets or sets the closed date of the ticket.

resolvedDatenull or string(date-time)

Gets or sets the resolved date of the ticket.

externalCreatedDatenull or string(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.

externalUpdatedDatenull or string(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.

externalIdnull or string

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

externalMetadatanull or string

Gets or sets the external metadata of the ticket.

categoryIdnull or string(uuid)

Gets or sets the category id of the ticket.

jobTypeIdnull or string(uuid)

Gets or sets the job type id of the ticket.

serviceNeededIdnull or string(uuid)

Gets or sets the service needed id of the ticket.

subStatusIdnull or string(uuid)

Gets or sets the sub status id of the ticket.

statusIdstring(uuid)

Gets or sets the status id of the ticket.

priorityIdnull or string(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.

customPropertiesnull or object

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": null, "description": null, "cause": null, "solution": null, "twinId": null, "notes": null, "latitude": null, "longitude": null, "insightId": null, "insightName": null, "diagnostics": null, "reporter": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "creator": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "assigneeType": "noAssignee", "userAssignee": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "workgroupAssignee": { "id": null, "name": null }, "dueDate": null, "closedDate": null, "resolvedDate": null, "externalCreatedDate": null, "externalUpdatedDate": null, "externalId": null, "externalMetadata": null, "categoryId": null, "jobTypeId": null, "serviceNeededId": null, "subStatusId": null, "statusId": "e900225c-0629-4e96-be6e-86a17a309645", "priorityId": null, "tasks": null, "customProperties": null, "extendableSearchablePropertyKeys": null, "recommendations": null, "ticketCosts": null }

Responses

Ticket created.

Bodyapplication/json
categoryobject

Gets or sets the category of the ticket.

jobTypeobject

Gets or sets the job type of the ticket.

serviceNeededobject

Gets or sets the service needed for the ticket.

subStatusobject

Gets or sets the sub-status of the ticket.

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.

idstring(uuid)

Gets or sets the unique identifier for the ticket.

ticketPriorityobject

Gets or sets the ticket priority details.

ticketStatusobject

Gets or sets the ticket status details.

insightIdnull or string(uuid)

Gets or sets the insight identifier associated with the ticket.

summarynull or string

Gets or sets the summary of the ticket.

descriptionnull or string

Gets or sets the description of the ticket.

causenull or string

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

solutionnull or string

Gets or sets the solution text associated with the ticket.

reporterobject

Gets or sets the reporter of the ticket.

assigneeTypeany

Gets or sets the type of the assignee.

Enum"noAssignee""customerUser""workGroup"
userAssigneeobject

Gets or sets the user who is assigned to the ticket.

workgroupAssigneeobject

Gets or sets the workgroup assignee for the ticket.

creatorobject

Gets or sets the creator of the ticket.

dueDatenull or string(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.

startedDatenull or string(date-time)

Gets or sets the date when the ticket was started.

resolvedDatenull or string(date-time)

Gets or sets the date when the ticket was resolved.

closedDatenull or string(date-time)

Gets or sets the date when the ticket was closed.

sourceTypeany

Gets or sets the source type of the ticket.

Enum"platform""app""dynamics""mapped"
sourceNamenull or string

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

externalIdnull or string

Gets or sets the external identifier of the ticket.

externalCreatedDatenull or string(date-time)

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

externalUpdatedDatenull or string(date-time)

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

latitudenull or number(double)

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

longitudenull or number(double)

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

customPropertiesnull or object

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.

scheduledDatenull or string(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

Gets or sets the twin associated with the ticket.

recommendationsArray of objects or null(TicketRecommendation)

Gets or sets the list of ticket's recommendations.

willowUrlnull or string

Gets or sets the ticket URL in Willow App.

insightUrlnull or string

Gets or sets the insight URL in Willow App.

Response
application/json
{ "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "jobType": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "serviceNeeded": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "subStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "comments": null, "attachments": null, "ticketCosts": null, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "ticketPriority": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null, "priorityLevel": "urgent" }, "ticketStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null, "tab": null, "color": null }, "insightId": null, "summary": null, "description": null, "cause": null, "solution": null, "reporter": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "assigneeType": "noAssignee", "userAssignee": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "workgroupAssignee": { "id": null, "name": null }, "creator": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "dueDate": null, "createdDate": "2019-08-24T14:15:22Z", "updatedDate": "2019-08-24T14:15:22Z", "startedDate": null, "resolvedDate": null, "closedDate": null, "sourceType": "platform", "sourceName": null, "externalId": null, "externalCreatedDate": null, "externalUpdatedDate": null, "latitude": null, "longitude": null, "customProperties": null, "extendableSearchablePropertyKeys": null, "scheduledDate": null, "occurrence": 0, "locations": null, "twin": { "id": null, "name": null, "modelId": null }, "recommendations": null, "willowUrl": null, "insightUrl": null }

Retrieves a ticket by its Id

Request

Security
oauth2
Path
ticketIdstring(uuid)required
No request payload

Responses

Ticket found.

Bodyapplication/json
categoryobject

Gets or sets the category of the ticket.

jobTypeobject

Gets or sets the job type of the ticket.

serviceNeededobject

Gets or sets the service needed for the ticket.

subStatusobject

Gets or sets the sub-status of the ticket.

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.

idstring(uuid)

Gets or sets the unique identifier for the ticket.

ticketPriorityobject

Gets or sets the ticket priority details.

ticketStatusobject

Gets or sets the ticket status details.

insightIdnull or string(uuid)

Gets or sets the insight identifier associated with the ticket.

summarynull or string

Gets or sets the summary of the ticket.

descriptionnull or string

Gets or sets the description of the ticket.

causenull or string

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

solutionnull or string

Gets or sets the solution text associated with the ticket.

reporterobject

Gets or sets the reporter of the ticket.

assigneeTypeany

Gets or sets the type of the assignee.

Enum"noAssignee""customerUser""workGroup"
userAssigneeobject

Gets or sets the user who is assigned to the ticket.

workgroupAssigneeobject

Gets or sets the workgroup assignee for the ticket.

creatorobject

Gets or sets the creator of the ticket.

dueDatenull or string(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.

startedDatenull or string(date-time)

Gets or sets the date when the ticket was started.

resolvedDatenull or string(date-time)

Gets or sets the date when the ticket was resolved.

closedDatenull or string(date-time)

Gets or sets the date when the ticket was closed.

sourceTypeany

Gets or sets the source type of the ticket.

Enum"platform""app""dynamics""mapped"
sourceNamenull or string

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

externalIdnull or string

Gets or sets the external identifier of the ticket.

externalCreatedDatenull or string(date-time)

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

externalUpdatedDatenull or string(date-time)

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

latitudenull or number(double)

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

longitudenull or number(double)

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

customPropertiesnull or object

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.

scheduledDatenull or string(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

Gets or sets the twin associated with the ticket.

recommendationsArray of objects or null(TicketRecommendation)

Gets or sets the list of ticket's recommendations.

willowUrlnull or string

Gets or sets the ticket URL in Willow App.

insightUrlnull or string

Gets or sets the insight URL in Willow App.

Response
application/json
{ "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "jobType": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "serviceNeeded": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "subStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "comments": null, "attachments": null, "ticketCosts": null, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "ticketPriority": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null, "priorityLevel": "urgent" }, "ticketStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null, "tab": null, "color": null }, "insightId": null, "summary": null, "description": null, "cause": null, "solution": null, "reporter": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "assigneeType": "noAssignee", "userAssignee": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "workgroupAssignee": { "id": null, "name": null }, "creator": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "dueDate": null, "createdDate": "2019-08-24T14:15:22Z", "updatedDate": "2019-08-24T14:15:22Z", "startedDate": null, "resolvedDate": null, "closedDate": null, "sourceType": "platform", "sourceName": null, "externalId": null, "externalCreatedDate": null, "externalUpdatedDate": null, "latitude": null, "longitude": null, "customProperties": null, "extendableSearchablePropertyKeys": null, "scheduledDate": null, "occurrence": 0, "locations": null, "twin": { "id": null, "name": null, "modelId": null }, "recommendations": null, "willowUrl": null, "insightUrl": null }

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 PatchTicketRequest model. Additionally, only "replace" operations are allowed.

Security
oauth2
Path
ticketIdstring(uuid)required

The unique identifier of the ticket to be updated.

Bodyrequired

A JsonPatchDocument<TModel> 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
categoryobject

Gets or sets the category of the ticket.

jobTypeobject

Gets or sets the job type of the ticket.

serviceNeededobject

Gets or sets the service needed for the ticket.

subStatusobject

Gets or sets the sub-status of the ticket.

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.

idstring(uuid)

Gets or sets the unique identifier for the ticket.

ticketPriorityobject

Gets or sets the ticket priority details.

ticketStatusobject

Gets or sets the ticket status details.

insightIdnull or string(uuid)

Gets or sets the insight identifier associated with the ticket.

summarynull or string

Gets or sets the summary of the ticket.

descriptionnull or string

Gets or sets the description of the ticket.

causenull or string

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

solutionnull or string

Gets or sets the solution text associated with the ticket.

reporterobject

Gets or sets the reporter of the ticket.

assigneeTypeany

Gets or sets the type of the assignee.

Enum"noAssignee""customerUser""workGroup"
userAssigneeobject

Gets or sets the user who is assigned to the ticket.

workgroupAssigneeobject

Gets or sets the workgroup assignee for the ticket.

creatorobject

Gets or sets the creator of the ticket.

dueDatenull or string(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.

startedDatenull or string(date-time)

Gets or sets the date when the ticket was started.

resolvedDatenull or string(date-time)

Gets or sets the date when the ticket was resolved.

closedDatenull or string(date-time)

Gets or sets the date when the ticket was closed.

sourceTypeany

Gets or sets the source type of the ticket.

Enum"platform""app""dynamics""mapped"
sourceNamenull or string

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

externalIdnull or string

Gets or sets the external identifier of the ticket.

externalCreatedDatenull or string(date-time)

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

externalUpdatedDatenull or string(date-time)

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

latitudenull or number(double)

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

longitudenull or number(double)

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

customPropertiesnull or object

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.

scheduledDatenull or string(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

Gets or sets the twin associated with the ticket.

recommendationsArray of objects or null(TicketRecommendation)

Gets or sets the list of ticket's recommendations.

willowUrlnull or string

Gets or sets the ticket URL in Willow App.

insightUrlnull or string

Gets or sets the insight URL in Willow App.

Response
application/json
{ "category": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "jobType": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "serviceNeeded": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "subStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null }, "comments": null, "attachments": null, "ticketCosts": null, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "ticketPriority": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null, "priorityLevel": "urgent" }, "ticketStatus": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": null, "tab": null, "color": null }, "insightId": null, "summary": null, "description": null, "cause": null, "solution": null, "reporter": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "assigneeType": "noAssignee", "userAssignee": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "workgroupAssignee": { "id": null, "name": null }, "creator": { "id": null, "name": null, "email": null, "phone": null, "company": null }, "dueDate": null, "createdDate": "2019-08-24T14:15:22Z", "updatedDate": "2019-08-24T14:15:22Z", "startedDate": null, "resolvedDate": null, "closedDate": null, "sourceType": "platform", "sourceName": null, "externalId": null, "externalCreatedDate": null, "externalUpdatedDate": null, "latitude": null, "longitude": null, "customProperties": null, "extendableSearchablePropertyKeys": null, "scheduledDate": null, "occurrence": 0, "locations": null, "twin": { "id": null, "name": null, "modelId": null }, "recommendations": null, "willowUrl": null, "insightUrl": null }

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

The contents of the file.

Bodyapplication/json
fileContentsstring(byte)
contentTypenull or string
fileDownloadNamenull or string
lastModifiednull or string(date-time)
entityTagobject or EntityTagHeaderValue (object)
One of:
enableRangeProcessingboolean
Response
application/json
{ "fileContents": "string", "contentType": null, "fileDownloadName": null, "lastModified": null, "entityTag": { "property1": null, "property2": null }, "enableRangeProcessing": true }

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