technitium 0.4.0

Typed async Rust client for the Technitium DNS Server API
Documentation
# Admin: Delete Secondary Node

## Endpoint

`/api/admin/cluster/primary/deleteSecondary`

## Method

GET

## Description

Immediately deletes the selected Secondary node entry from the Cluster without asking the node to leave gracefully. This call can only be made at the Primary node.

## Authentication

Required. Token must be provided via the `token` parameter.

## Permissions

Administration: Delete

## Parameters

| Name | Type | Required | Conditional | Description |
|------|------|----------|-------------|-------------|
| `token` | string | Yes | No | The session token generated by the `login` or the `createToken` call. |
| `secondaryNodeId` | integer | Yes | No | The Secondary node ID which must be deleted from the Cluster immediately. |

## Response Fields

| Field | Type | Description |
|-------|------|-------------|
| `clusterInitialized` | boolean | `true` indicating the cluster is still active. |
| `dnsServerDomain` | string | The FQDN of this DNS server. |
| `version` | string | The DNS server software version. |
| `clusterDomain` | string | The cluster domain name. |
| `heartbeatRefreshIntervalSeconds` | integer | Heartbeat refresh interval. |
| `heartbeatRetryIntervalSeconds` | integer | Heartbeat retry interval. |
| `configRefreshIntervalSeconds` | integer | Config refresh interval. |
| `configRetryIntervalSeconds` | integer | Config retry interval. |
| `nodes` | array | Updated list of cluster node objects (without the deleted Secondary). |
| `nodes[].id` | integer | Unique node ID. |
| `nodes[].name` | string | Node FQDN. |
| `nodes[].url` | string | Node HTTPS API URL. |
| `nodes[].ipAddresses` | array of strings | Node IP addresses. |
| `nodes[].type` | string | Node type: `Primary` or `Secondary`. |
| `nodes[].state` | string | Node state: `Self`, `Connected`, or `Unreachable`. |
| `nodes[].lastSeen` | string (datetime) | Timestamp of last contact. |

## Conditional Logic Notes

- This call can only be made at the Primary node.
- Unlike Remove Secondary Node, this is NOT a graceful process. The Secondary node is not informed of its removal.
- Use this when the Secondary node is unreachable or decommissioned and cannot be removed gracefully.

## Edge Cases

- The deleted Secondary node will still believe it is part of the cluster until it tries to contact the Primary and fails.
- The Secondary node will need to manually leave the cluster (or force leave) to clean up its own configuration.
- After deletion, the `nodes` array in the response will no longer contain the deleted Secondary node.