> ## 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 let you send commands to devices or make changes in external systems from KODE OS. Data collection reads from external systems. Actions write back — setting values, triggering commands, creating records, and managing schedules.

## Types of actions

### Point actions

Point actions 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 temperature setpoint to 22°C
* Turn a light on or off
* Override a damper position for two 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 (for example, `WRITE`, `OVERRIDE`, `RELEASE`)     |
| **Display name**  | The user-facing name in the UI (for example, Set Value or Ack Alarm)    |
| **Target entity** | Which entity type the action applies to (for example, Points or 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 (computerized maintenance management system) such as Corrigo or 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).

## How actions work

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark"}}
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. **You initiate** 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 shows** the result back to you

## Action availability

Not all integrations support actions. Availability depends on:

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

Check the specific integration page for available actions. Browse the [Integrations catalog](/products/integrations/catalog) and open a vendor page to see its Actions section when present.

## 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. The device may also 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. 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>
