Event Types
We are continually adding more event types as we build out the Texture platform so if there is an event type you would like to see, please let us know.
First some overall notes on the event types:
We follow the Standard Webhook Specification as closely as possible for maximum compatibility with existing webhook integrations.
- All events are sent to the destination as a JSON object.
- All events have a
type
property that indicates the type of event. - All events have a
version
property that indicates the version of the event type. We use semver for versioning. - All events have a
key
property that is a unique identifier for the event. Thekey
is a hash of the event data and is used to deduplicate events helping you avoid duplicate events.
customer.created
Fired whenever a customer is created on the Texture platform.
{ "type": "customer.created", "version": "0.0.1", "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87", "timestamp": "2024-08-22T15:54:52.013Z", "data": { "id": "cllzcbw0t00016g7dfua590dd", "workspaceId": "cllzcf9xe00066g7dcsxyq1e5", "referenceId": "user-123456", "organizationId": "cm6y0mhhy00000cl4hz6i78ik", "updatedAt": "2024-08-22T15:54:52.013Z", "createdAt": "2024-08-22T15:54:52.013Z", "email": "bjones@texturehq.com", "firstName": "Bob", "lastName": "Jones", "phone": "+15551234567" } }
Key | Description |
---|---|
id | The unique identifier for the customer. |
workspaceId | The ID of the workspace associated with the customer. |
referenceId | The reference ID for the customer. |
organizationId | The ID of the organization associated with the customer. |
updatedAt | The date and time when the customer was last updated. |
createdAt | The date and time when the customer was created. |
email | The email address of the customer. |
firstName | The first name of the customer. |
lastName | The last name of the customer. |
phone | The phone number of the customer. |
command.failed
Fired whenever a command run against a device fails.
{ "type": "command.failed", "version": "0.0.2", "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87", "timestamp": "2024-08-22T15:54:52.013Z", "data": { "workspaceId": "cllzcf9xe00066g7dcsxyq1e5", "commandId": "cllzcbw0t00016g7dfua590dd", "deviceId": "cllzcbw0t00016g7dfua590dd", "error": { "message": "Failed to execute command" }, "issuedAt": "2023-09-01T20:48:24.967Z", "executedAt": "2023-09-01T20:48:24.967Z" } }
Key | Description |
---|---|
workspaceId | The ID of the workspace associated with the command. |
commandId | The unique identifier for the command. |
deviceId | The ID of the device on which the command was executed. |
error.message | The error that occurred. |
issuedAt | The date and time when the command was issued. |
executedAt | The date and time when the command was executed. |
command.succeeded
Fired whenever a command run against a device succeeds.
{ "type": "command.succeeded", "version": "0.0.2", "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87", "timestamp": "2024-08-22T15:54:52.013Z", "data": { "workspaceId": "cllzcf9xe00066g7dcsxyq1e5", "commandId": "cllzcbw0t00016g7dfua590dd", "deviceId": "cllzcbw0t00016g7dfua590dd", "issuedAt": "2023-09-01T20:48:24.967Z", "executedAt": "2023-09-01T20:48:24.967Z" } }
Key | Description |
---|---|
workspaceId | The ID of the workspace associated with the command. |
commandId | The unique identifier for the command. |
deviceId | The ID of the device on which the command was executed. |
issuedAt | The date and time when the command was issued. |
executedAt | The date and time when the command was executed. |
device.discovered
Fired when a new device is connected to the Texture platform. Includes the following payload:
{ "type": "device.discovered", "version": "1.0.0", "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87", "timestamp": "2024-08-22T15:54:52.013Z", "data": { "deviceId": "cllzcbw0t00016g7dfua590dd", "workspaceId": "cllzcf9xe00066g7dcsxyq1e5", "organizationId": "cm6y391is00000cjlea9361ht", "updatedAt": "2024-08-22T15:54:52.013Z", "createdAt": "2024-08-22T15:54:52.013Z", "manufacturer": { "slug": "tesla", "displayName": "Tesla" }, "deviceModel": { "slug": "tesla:powerwall", "displayName": "Powerwall" }, "deviceType": "battery", "tags": [ "battery", "powerwall" ], "customer": { "id": "cllzcbw0t00016g7dfua590dd", "email": "bjones@texturehq.com", "firstName": "Bob", "lastName": "Jones", "phone": "+15551234567" }, "site": { "id": "cllzcbw0t00016g7dfua590dd", "name": "Empire State Building", "address": { "streetAddress1": "20 W 34th St", "city": "New York", "state": "NY", "postalCode": "10118", "country": "US" }, "longitude": -73.985428, "latitude": 40.748817 } } }
Key | Description |
---|---|
deviceId | The unique identifier for the device. |
workspaceId | The ID of the workspace associated with the device. |
organizationId | The ID of the organization associated with the device. |
updatedAt | The timestamp when this update was created. This is the timestamp of the request the OEM's API returned, not necessarly the timestamp of when the state was actually updated on the device. For that see state.createdAt. |
createdAt | The date and time when the device was created. |
manufacturer.slug | The human-readable identifier of the manufacturer of the device. |
manufacturer.displayName | The display name of the manufacturer of the device. |
deviceModel.slug | The human-readable identifier of the device model. |
deviceModel.displayName | The display name of the device model. |
deviceType | The type of device (e.g. battery). |
tags | An array of tags associated with the device. |
customer.id | The unique identifier for the customer associated with the device. |
customer.referenceId | The reference ID for the customer associated with the device. |
customer.email | The email address of the customer associated with the device. |
customer.firstName | The first name of the customer associated with the device. |
customer.lastName | The last name of the customer associated with the device. |
customer.phone | The phone number of the customer associated with the device. |
site.id | The unique identifier for the site associated with the device. |
site.name | The name of the site associated with the device. |
site.address.streetAddress1 | The first line of the street address of the site associated with the device. |
site.address.streetAddress2 | The second line of the street address of the site associated with the device. |
site.address.city | The city of the site associated with the device. |
site.address.state | The state of the site associated with the device. |
site.address.postalCode | The postal code of the site associated with the device. |
site.address.country | The country of the site associated with the device. |
site.longitude | The longitude of the geographical coordinates of the site associated with the device. |
site.latitude | The latitude of the geographical coordinates of the site associated with the device. |
Note that when you configure a destination, you can specify which device types are fired for a given destination which can act as a kind of filter. So for example you could say that you want only Battery updates to go to a given webhook and we will filter them for you.
device.updated
Fired whenever we get updated data for a device.
{ "type": "device.updated", "version": "1.0.0", "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87", "timestamp": "2024-08-22T15:54:52.013Z", "data": { "deviceId": "cllzcbw0t00016g7dfua590dd", "workspaceId": "cllzcf9xe00066g7dcsxyq1e5", "organizationId": "cm6y391is00000cjlea9361ht", "updatedAt": "2024-08-22T15:54:52.013Z", "createdAt": "2024-08-22T15:54:52.013Z", "manufacturer": { "slug": "tesla", "displayName": "Tesla" }, "deviceModel": { "slug": "tesla:powerwall", "displayName": "Powerwall" }, "deviceType": "battery", "tags": [ "battery", "powerwall" ], "customer": { "id": "cllzcbw0t00016g7dfua590dd", "email": "bjones@texturehq.com", "firstName": "Bob", "lastName": "Jones", "phone": "+15551234567" }, "site": { "id": "cllzcbw0t00016g7dfua590dd", "name": "Empire State Building", "address": { "streetAddress1": "20 W 34th St", "city": "New York", "state": "NY", "postalCode": "10118", "country": "US" }, "longitude": -73.985428, "latitude": 40.748817 }, "state": { "id": "cltyhxpy406poq4z3zx19y2fs", "charge": 18069.15789473684, "chargePercentage": 59.30925587453832, "chargingState": "charging", "whConsumed": 0, "chargeRate": -2290, "backupReserve": 30, "gridStatus": "idle", "gridPower": 0, "gridEnergy": 0, "isStormModeEnabled": true, "isStormModeActive": false, "createdAt": "2024-03-19T14:55:10.493Z" } } }
Key | Description |
---|---|
deviceId | The unique identifier for the device. |
workspaceId | The ID of the workspace associated with the device. |
organizationId | The ID of the organization associated with the device. |
updatedAt | The timestamp when this update was created. This is the timestamp of the request the OEM's API returned, not necessarly the timestamp of when the state was actually updated on the device. For that see state.createdAt. |
createdAt | The date and time when the device was created. |
manufacturer.slug | The human-readable identifier of the manufacturer of the device. |
manufacturer.displayName | The display name of the manufacturer of the device. |
deviceModel.slug | The human-readable identifier of the device model. |
deviceModel.displayName | The display name of the device model. |
deviceType | The type of device (e.g. battery). |
tags | An array of tags associated with the device. |
customer.id | The unique identifier for the customer associated with the device. |
customer.referenceId | The reference ID for the customer associated with the device. |
customer.email | The email address of the customer associated with the device. |
customer.firstName | The first name of the customer associated with the device. |
customer.lastName | The last name of the customer associated with the device. |
customer.phone | The phone number of the customer associated with the device. |
site.id | The unique identifier for the site associated with the device. |
site.name | The name of the site associated with the device. |
site.address.streetAddress1 | The first line of the street address of the site associated with the device. |
site.address.streetAddress2 | The second line of the street address of the site associated with the device. |
site.address.city | The city of the site associated with the device. |
site.address.state | The state of the site associated with the device. |
site.address.postalCode | The postal code of the site associated with the device. |
site.address.country | The country of the site associated with the device. |
site.longitude | The longitude of the geographical coordinates of the site associated with the device. |
site.latitude | The latitude of the geographical coordinates of the site associated with the device. |
state | An object containing the current state of the device. |
state.id | Unique identifier for this state instance. |
state.charge | The current charge of the device in watt-hours. |
state.chargePercentage | The current charge level as a percentage. |
state.chargingState | The current charging status of the device. |
state.whConsumed | The watt-hours consumed by the device. |
state.chargeRate | The rate at which the device is charging or discharging. |
state.backupReserve | The percentage of charge reserved for backup. |
state.gridStatus | The current status of the grid connection. |
state.gridPower | The power currently drawn from or supplied to the grid. |
state.gridEnergy | The energy exchanged with the grid. |
state.createdAt | The timestamp when this state update occurred (which may be different than the event timestamp if the state was batched and sent slightly delayed which is the case for some OEMs). |
Note, the state
object will differ by device type. For example, a battery will have different state data than an inverter. We have details on these differences here. The above example is for a battery.
The lion's share of these events will be triggered from the Device state updates which we get mostly on 5 or 15 minute intervals from the devices, however we are always looking to get tighter interval telemetry data as well as allow for specifying filters on that data. Stay tuned as we continue to add richer functionality to the filtering data to these events.
device.disconnected
Fired whenever a device disconnects from the Texture platform.
{ "type": "device.disconnected", "version": "1.0.0", "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87", "timestamp": "2024-08-22T15:54:52.013Z", "data": { "deviceId": "cllzcbw0t00016g7dfua590dd", "workspaceId": "cllzcf9xe00066g7dcsxyq1e5", "organizationId": "cm6y391is00000cjlea9361ht", "updatedAt": "2024-08-22T15:54:52.013Z", "createdAt": "2024-08-22T15:54:52.013Z", "manufacturer": { "slug": "tesla", "displayName": "Tesla" }, "deviceModel": { "slug": "tesla:powerwall", "displayName": "Powerwall" }, "deviceType": "battery", "tags": [ "battery", "powerwall" ], "customer": { "id": "cllzcbw0t00016g7dfua590dd", "email": "bjones@texturehq.com", "firstName": "Bob", "lastName": "Jones", "phone": "+15551234567" }, "site": { "id": "cllzcbw0t00016g7dfua590dd", "name": "Empire State Building", "address": { "streetAddress1": "20 W 34th St", "city": "New York", "state": "NY", "postalCode": "10118", "country": "US" }, "longitude": -73.985428, "latitude": 40.748817 } } }
Key | Description |
---|---|
deviceId | The unique identifier for the device. |
workspaceId | The ID of the workspace associated with the device. |
organizationId | The ID of the organization associated with the device. |
updatedAt | The timestamp when this update was created. This is the timestamp of the request the OEM's API returned, not necessarly the timestamp of when the state was actually updated on the device. For that see state.createdAt. |
createdAt | The date and time when the device was created. |
manufacturer.slug | The human-readable identifier of the manufacturer of the device. |
manufacturer.displayName | The display name of the manufacturer of the device. |
deviceModel.slug | The human-readable identifier of the device model. |
deviceModel.displayName | The display name of the device model. |
deviceType | The type of device (e.g. battery). |
tags | An array of tags associated with the device. |
customer.id | The unique identifier for the customer associated with the device. |
customer.referenceId | The reference ID for the customer associated with the device. |
customer.email | The email address of the customer associated with the device. |
customer.firstName | The first name of the customer associated with the device. |
customer.lastName | The last name of the customer associated with the device. |
customer.phone | The phone number of the customer associated with the device. |
site.id | The unique identifier for the site associated with the device. |
site.name | The name of the site associated with the device. |
site.address.streetAddress1 | The first line of the street address of the site associated with the device. |
site.address.streetAddress2 | The second line of the street address of the site associated with the device. |
site.address.city | The city of the site associated with the device. |
site.address.state | The state of the site associated with the device. |
site.address.postalCode | The postal code of the site associated with the device. |
site.address.country | The country of the site associated with the device. |
site.longitude | The longitude of the geographical coordinates of the site associated with the device. |
site.latitude | The latitude of the geographical coordinates of the site associated with the device. |
enrollment.approved
Fired whenever an enrollment is approved.
This event is only available for organizations that have opted in to Grid Services. If you are interested in Grid Services, please reach out to us.
{ "type": "enrollment.approved", "version": "0.0.1", "key": "8f7d3b2e1a9c6f4e0d5b8a7c2e1f3d5b8a7c2e1f3d5b8a7c2e1f3d5b8a7c2e1f", "timestamp": "2024-03-20T14:30:00Z", "data": { "workspaceId": "clm2n3o4p5q6r7s8t9u0v1w2x", "organizationId": "cla1b2c3d4e5f6g7h8i9j0k1l", "customer": { "id": "cm3excw3h000008jsdjqm42lc", "workspaceId": "cm3exhlu0000008mb7j2gay6m", "organizationId": "cm3exhssc000108mbcjbi5x8r", "email": "jdoe@aol.com", "firstName": "Jane", "lastName": "Doe", "referenceId": "cust-123456-abcdef", "updatedAt": "2024-03-20T14:30:00Z", "createdAt": "2024-03-20T14:30:00Z" }, "program": { "manager": "GridCo Energy Services" } } }
Key | Description |
---|---|
workspaceId | The ID of the workspace associated with the enrollment. |
organizationId | The ID of the organization associated with the enrollment. |
customer.id | The ID of the customer associated with the enrollment. |
customer.workspaceId | The ID of the workspace associated with the customer. |
customer.organizationId | The ID of the organization associated with the customer. |
customer.email | The email address of the customer. |
customer.phone | The phone number of the customer. |
customer.firstName | The first name of the customer. |
customer.lastName | The last name of the customer. |
customer.referenceId | The reference ID for the customer. |
customer.updatedAt | The date and time when the customer was last updated. |
customer.createdAt | The date and time when the customer was created. |
program.manager | The manager of the program associated with the enrollment. |
site.created
Fired whenever a site is created on the Texture platform.
{ "type": "site.created", "version": "0.0.1", "key": "cc0e387d55ab78fb204c5c2225eff0aa6a9ca3f32a8d5542f75fe9b8bd972d87", "timestamp": "2024-08-22T15:54:52.013Z", "data": { "id": "cllzcbw0t00016g7dfua590dd", "workspaceId": "cllzcf9xe00066g7dcsxyq1e5", "referenceId": "user-123456", "updatedAt": "2024-08-22T15:54:52.013Z", "createdAt": "2024-08-22T15:54:52.013Z", "siteName": "Empire State Building", "location": { "longitude": -73.985428, "latitude": 40.748817 } } }
Key | Description |
---|---|
id | The unique identifier for the site. |
workspaceId | The ID of the workspace associated with the site. |
referenceId | The reference ID for the site. |
siteName | The name of the site. |
updatedAt | The date and time when the site was last updated. |
createdAt | The date and time when the site was created. |
location.latitude | The latitiude of the geographical coordinates of the site. |
location.longitude | The longitude of the geographical coordinates of the site. |