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

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

List categories.

Request

Returns a paginated list of the possible categories that a ticket can have.

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

OK

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

Create a category.

Request

Security
oauth2
Body
namestring[ 0 .. 80 ] charactersrequired

Gets or sets the name of the ticket category.

locationsArray of strings or null

Gets or sets the list of locations associated with the ticket category.

{ "name": "string", "locations": [ "string" ] }

Responses

Created

Bodyapplication/json
idstring(uuid)

Gets or sets the ticket category id.

namestring or null

Gets or sets the category name.

isActiveboolean

Gets or sets a value indicating whether the category is active or not.

locationsArray of strings or null

Gets or sets the list of locations associated with the ticket category.

Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "isActive": true, "locations": [ "string" ] }

Update a category.

Request

Security
oauth2
Path
categoryIdstring(uuid)required
Body
namestring or null[ 0 .. 80 ] characters

Gets or sets the category name.

isActiveboolean or null

Gets or sets a value indicating whether the category is active or not.

locationsArray of strings or null

Gets or sets the list of locations associated with the ticket category.

{ "name": "string", "isActive": true, "locations": [ "string" ] }

Responses

No Content

Response
No content

List job types.

Request

Returns a paginated list of the possible job types that a ticket can have.

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

OK

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

Create a job type.

Request

Security
oauth2
Body
namestring[ 0 .. 500 ] charactersrequired

Gets or sets the job type name.

{ "name": "string" }

Responses

Created

Bodyapplication/json
idstring(uuid)

Gets or sets the unique identifier for the job type.

namestring or null

Gets or sets the name of the job type.

isActiveboolean

Gets or sets a value indicating whether JobType is active.

Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "isActive": true }

Update a job type.

Request

Security
oauth2
Path
jobTypeIdstring(uuid)required
Body
namestring or null[ 0 .. 500 ] characters

Gets or sets the job type name.

isActiveboolean or null

Gets or sets a value indicating whether the job type is active.

{ "name": "string", "isActive": true }

Responses

No Content

Response
No content

List services needed.

Request

Returns a paginated list of the possible services needed that a ticket can have.

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

OK

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

Create a service needed.

Request

Security
oauth2
Body
namestring[ 0 .. 500 ] charactersrequired

Gets or sets the name of the service needed.

categoryIdstring or null(uuid)

Gets or sets the category Id of the service needed.

locationsArray of strings or null

Gets or sets the space twin Ids associated with the service needed.

{ "name": "string", "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0", "locations": [ "string" ] }

Responses

Created

Bodyapplication/json
idstring(uuid)

Gets or sets the unique identifier for the service needed.

namestring or null

Gets or sets the name of the service needed.

categoryIdstring or null(uuid)

Gets or sets the category Id of the service needed.

locationsArray of strings or null

Gets or sets the locations associated with the service needed.

isActiveboolean

Gets or sets a value indicating whether service needed is active or not.

Response
application/json
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0", "locations": [ "string" ], "isActive": true }

Update a service needed.

Request

Security
oauth2
Path
serviceNeededIdstring(uuid)required

The ID of the service needed.

Body
namestring or null[ 0 .. 500 ] characters

Gets or sets the name of the service needed.

categoryIdstring or null(uuid)

Gets or sets the category Id of the service needed.

isActiveboolean or null

Gets or sets a value indicating whether the service needed is active.

locationsArray of strings or null

Gets or sets the space twin Ids associated with the service needed.

{ "name": "string", "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0", "isActive": true, "locations": [ "string" ] }

Responses

No Content

Response
No content

Retrieves a list of ticket status.

Request

Security
oauth2
No request payload

Responses

OK

Bodyapplication/jsonArray [
idstring(uuid)

Gets or sets the unique identifier for the ticket status.

namestring or null

Gets or sets the name of the ticket status.

tabstring or null

Gets or sets the status's tab that can be used to filter ticket status in UI.

colorstring or null

Gets or sets the color associated with the ticket status.

]
Response
application/json
[ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "tab": "string", "color": "string" } ]

Gets the list of ticket priorities.

Request

Security
oauth2
No request payload

Responses

OK

Bodyapplication/jsonArray [
idstring(uuid)

Gets or sets the unique identifier for the ticket priority.

namestring or null

Gets or sets the name of the ticket priority.

priorityLevelstring(TicketPriorityLevel)

Ticket priority levels. These are the standardized priority levels recognized by Willow that can be assigned to tickets. Custom priority levels should be mapped to these standard levels so the system can interpret them consistently.

Enum"urgent""high""medium""low"
]
Response
application/json
[ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "priorityLevel": "urgent" } ]