# Litmus Edge Manager 3.0.x - Edge Lifecycle: Device HA

## Get HA details

**GET** `{{LEM_URL}}/api/v1/device/{{deviceID}}/ha`

# Get HA details

Returns the high-availability (HA) configuration and current state for a device pair. If the device is not part of an HA pair, the response reflects an unconfigured state.
## Endpoint

```http
GET {{LEM_URL}}/api/v1/device/{deviceId}/ha
```
## Authentication

API key in a request header (case sensitive). The value is the LEM admin API token.

| URL prefix | Auth header |
|---|---|
| `{{LEM_URL}}/api/v1/...` (main fleet API) | `X-AuthToken: <token>` |
| `{{LEM_adminURL}}/admin/v1/...` (admin console, port 8446) | `X-AuthToken: <token>` |
| `{{LEM_URL}}/mpcs/...` (Marketplace Catalog) | `Authorization: <token>` (3.0.x also accepts `X-AuthToken`) |
## Parameters

| `deviceId` | path | **Required.** The device id. |
## Response

`HaDetailsResponse` (primary/backup devices, IPs, heartbeat, state).
## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 200 OK

```json
{
  "haRole": null,
  "haPairDeviceId": null,
  "haEnabled": false,
  "pairDeviceName": null,
  "deviceIpAddress": null,
  "runtimeStatus": null
}
```

---

## Get device network interfaces for HA

**GET** `{{LEM_URL}}/api/v1/device/{{deviceID}}/ha/interfaces`

# Get device network interfaces for HA

Lists a device's network interfaces, used when choosing the interface/IP for an HA pairing.
## Endpoint

```http
GET {{LEM_URL}}/api/v1/device/{deviceId}/ha/interfaces
```
## Authentication

API key in a request header (case sensitive). The value is the LEM admin API token.

| URL prefix | Auth header |
|---|---|
| `{{LEM_URL}}/api/v1/...` (main fleet API) | `X-AuthToken: <token>` |
| `{{LEM_adminURL}}/admin/v1/...` (admin console, port 8446) | `X-AuthToken: <token>` |
| `{{LEM_URL}}/mpcs/...` (Marketplace Catalog) | `Authorization: <token>` (3.0.x also accepts `X-AuthToken`) |
## Parameters

| `deviceId` | path | **Required.** The device id. |
## Response

`[NetworkInterface]` (name, addresses, status).
## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Response

**Status**: 200 OK

```json
[
  {
    "name": "eth0",
    "address": "10.17.2.87",
    "hwAddr": "00:50:56:b9:b6:78"
  }
]
```

---

## Configure HA pair

**POST** `{{LEM_URL}}/api/v1/device/{{deviceID}}/ha/configure`

# Configure HA pair

Configures a high-availability pair: a primary and a backup device, each with its IP address. After configuring, enable the pair to make it active.
## Endpoint

```http
POST {{LEM_URL}}/api/v1/device/{deviceId}/ha/configure
```
## Authentication

API key in a request header (case sensitive). The value is the LEM admin API token.

| URL prefix | Auth header |
|---|---|
| `{{LEM_URL}}/api/v1/...` (main fleet API) | `X-AuthToken: <token>` |
| `{{LEM_adminURL}}/admin/v1/...` (admin console, port 8446) | `X-AuthToken: <token>` |
| `{{LEM_URL}}/mpcs/...` (Marketplace Catalog) | `Authorization: <token>` (3.0.x also accepts `X-AuthToken`) |
## Parameters

| `deviceId` | path | **Required.** The device the call is scoped to. |
## Request body

`ConfigureHaRequest` `{ primaryDeviceId, primaryIpAddress, backupDeviceId, backupIpAddress }`.
## Response

`ApiResponse` (`{ code, message }`).
## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


### Request Body

```json
{
  "primaryDeviceId": "string",
  "primaryIpAddress": "string",
  "backupDeviceId": "string",
  "backupIpAddress": "string"
}
```

---

## Enable HA pair

**POST** `{{LEM_URL}}/api/v1/device/{{deviceID}}/ha/enable`

# Enable HA pair

Enables a previously configured HA pair, starting failover protection.
## Endpoint

```http
POST {{LEM_URL}}/api/v1/device/{deviceId}/ha/enable
```
## Authentication

API key in a request header (case sensitive). The value is the LEM admin API token.

| URL prefix | Auth header |
|---|---|
| `{{LEM_URL}}/api/v1/...` (main fleet API) | `X-AuthToken: <token>` |
| `{{LEM_adminURL}}/admin/v1/...` (admin console, port 8446) | `X-AuthToken: <token>` |
| `{{LEM_URL}}/mpcs/...` (Marketplace Catalog) | `Authorization: <token>` (3.0.x also accepts `X-AuthToken`) |
## Parameters

| `deviceId` | path | **Required.** The device id. |
## Response

`ApiResponse` (`{ code, message }`).
## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


---

## Disable HA pair

**POST** `{{LEM_URL}}/api/v1/device/{{deviceID}}/ha/disable`

# Disable HA pair

Disables an active HA pair without removing its configuration, so it can be re-enabled later.
## Endpoint

```http
POST {{LEM_URL}}/api/v1/device/{deviceId}/ha/disable
```
## Authentication

API key in a request header (case sensitive). The value is the LEM admin API token.

| URL prefix | Auth header |
|---|---|
| `{{LEM_URL}}/api/v1/...` (main fleet API) | `X-AuthToken: <token>` |
| `{{LEM_adminURL}}/admin/v1/...` (admin console, port 8446) | `X-AuthToken: <token>` |
| `{{LEM_URL}}/mpcs/...` (Marketplace Catalog) | `Authorization: <token>` (3.0.x also accepts `X-AuthToken`) |
## Parameters

| `deviceId` | path | **Required.** The device id. |
## Response

`ApiResponse` (`{ code, message }`).
## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


---

## Remove HA configuration

**DELETE** `{{LEM_URL}}/api/v1/device/{{deviceID}}/ha`

# Remove HA configuration

Removes the HA configuration from a device pair entirely. Disable first if the pair is active.
## Endpoint

```http
DELETE {{LEM_URL}}/api/v1/device/{deviceId}/ha
```
## Authentication

API key in a request header (case sensitive). The value is the LEM admin API token.

| URL prefix | Auth header |
|---|---|
| `{{LEM_URL}}/api/v1/...` (main fleet API) | `X-AuthToken: <token>` |
| `{{LEM_adminURL}}/admin/v1/...` (admin console, port 8446) | `X-AuthToken: <token>` |
| `{{LEM_URL}}/mpcs/...` (Marketplace Catalog) | `Authorization: <token>` (3.0.x also accepts `X-AuthToken`) |
## Parameters

| `deviceId` | path | **Required.** The device id. |
## Response

`ApiResponse` (`{ code, message }`).
## Errors

| HTTP status         | When it happens                                                                |
|---------------------|--------------------------------------------------------------------------------|
| `400 Bad Request`   | Missing or malformed query/body parameter.                                     |
| `401 Unauthorized`  | Missing or invalid credentials.                                                |
| `403 Forbidden`     | Token lacks permission for this operation.                                     |
| `404 Not Found`     | Target entity does not exist.                                                  |
| `5xx`               | Service is unreachable, restarting, or internally errored. Inspect device logs under `System > Support`. |

> **TLS note**: edge devices use a self-signed certificate by default. Either install the device CA in your client trust store or disable certificate verification when calling this endpoint directly.


---

