> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.kodelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Actions

> Send commands and make changes to devices and external systems through KODE OS

> Send commands and make changes to devices and external systems through KODE OS

Actions allow you to send commands to devices or make changes in external systems directly from KODE OS. While data collection reads data from external systems, actions write data back -- setting values, triggering commands, creating records, and managing schedules.

## Types of Actions

### Point Actions

Point actions allow you to directly change a device's behavior by writing a new value to one of its data points. These are the most common type of action.

**Examples**:

* Set a thermostat's temperature setpoint to 22°C
* Turn a light on or off
* Override a damper position for 2 hours
* Acknowledge an alarm

Point actions are defined per integration and per entity type. Each action specifies:

| Property          | Description                                                           |
| ----------------- | --------------------------------------------------------------------- |
| **Action Type**   | The kind of operation (e.g., `WRITE`, `OVERRIDE`, `RELEASE`)          |
| **Display Name**  | The user-facing name shown in the UI (e.g., "Set Value", "Ack Alarm") |
| **Target Entity** | Which entity type the action applies to (e.g., Points, Alarms)        |

### Entity Actions

Entity actions create or update records in external systems rather than controlling physical devices.

**Examples**:

* Create a work order in a CMMS system (e.g., Corrigo, ServiceChannel)
* Push an event to a notification system
* Update a reservation in a booking system

### Schedule Actions

Schedule actions manage time-based configurations in external systems. These are available for integrations that support schedule management.

**Examples**:

* Create a new weekly schedule in a Niagara controller
* Update an existing calendar schedule's date range
* Delete a temporary override schedule
* Sync schedule references between KODE OS and the controller

See the [Schedules guide](/products/integrations/capabilities/schedules) for more details.

## How Actions Work

```mermaid theme={null}
sequenceDiagram
    participant User
    participant KODE as KODE OS
    participant Vendor as External System
    User->>KODE: Initiate action (e.g., set temp to 22°C)
    KODE->>KODE: Validate action fields
    KODE->>Vendor: Send command via API
    Vendor-->>KODE: Confirm or reject
    KODE-->>User: Show result
```

1. **User initiates** the action from the device detail page, point explorer, or schedule manager
2. **KODE OS validates** the action parameters against the integration's requirements
3. **KODE OS sends** the command to the external system using the appropriate protocol
4. **The external system confirms** or rejects the action
5. **KODE OS reflects** the result back to the user

## Action Availability

Not all integrations support actions. The availability depends on:

* **The external system's API**: The vendor must expose write/command endpoints
* **The protocol**: REST, SOAP, and SDK integrations most commonly support actions. Webhook-only and MQTT integrations may have limited or no action support.
* **The entity type**: An integration might support point write actions but not alarm acknowledgment, or vice versa

Check the specific integration's page to see which actions are available.

## Supported Integrations

Integrations that support actions include BMS controllers (Niagara, Schneider Electric, Distech), work order systems (Corrigo, ServiceChannel), and lighting controllers (Lutron, Enlighted). The full list of actions is documented on each integration's individual page.

## Troubleshooting

<AccordionGroup>
  <Accordion title="Action fails with permission error">
    Verify that the API credentials configured in the connector have write permissions in the external system. Many vendor APIs use separate read-only and read-write API keys or roles.
  </Accordion>

  <Accordion title="Action succeeds but value doesn't change">
    Some external systems queue commands rather than applying them immediately. Check the external system's command queue or history. Additionally, the device may have a local override that takes precedence over remote commands.
  </Accordion>

  <Accordion title="Action type not available for a device">
    Not all devices within an integration support all action types. The available actions depend on the device type and the external system's capabilities. If a specific action is missing, verify that the device's firmware supports the command.
  </Accordion>
</AccordionGroup>
