# Admin: Set Cluster Options
## Endpoint
`/api/admin/cluster/primary/setOptions`
## Method
GET
## Description
Allows setting Cluster options to be used by all Secondary nodes. This call can only be made at the Primary node.
## Authentication
Required. Token must be provided via the `token` parameter.
## Permissions
Administration: Modify
## Parameters
| `token` | string | Yes | No | The session token generated by the `login` or the `createToken` call. |
| `node` | string | No | No | The node domain name for which the API call is intended. When unspecified, the current node is used. Can only be used when Clustering is initialized. |
| `heartbeatRefreshIntervalSeconds` | integer | No | No | Interval in seconds for refreshing the state of all nodes. Valid range: `10`-`300`. Default: `30`. |
| `heartbeatRetryIntervalSeconds` | integer | No | No | Retry interval in seconds for state refresh on failure. Valid range: `10`-`300`. Default: `10`. |
| `configRefreshIntervalSeconds` | integer | No | No | Interval in seconds for refreshing configuration from the Primary node. Valid range: `30`-`3600`. Default: `900`. |
| `configRetryIntervalSeconds` | integer | No | No | Retry interval in seconds for configuration refresh on failure. Valid range: `30`-`3600`. Default: `60`. |
## Response Fields
| `clusterInitialized` | boolean | `true` indicating the cluster is active. |
| `dnsServerDomain` | string | The FQDN of this DNS server. |
| `version` | string | The DNS server software version. |
| `clusterDomain` | string | The cluster domain name. |
| `heartbeatRefreshIntervalSeconds` | integer | Updated heartbeat refresh interval. |
| `heartbeatRetryIntervalSeconds` | integer | Updated heartbeat retry interval. |
| `configRefreshIntervalSeconds` | integer | Updated config refresh interval. |
| `configRetryIntervalSeconds` | integer | Updated config retry interval. |
| `configLastSynced` | string (datetime) | Timestamp of last config sync. |
| `nodes` | array | List of all cluster node objects. |
| `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.
- All interval parameters are optional; only specified parameters are updated.
- Each interval parameter has a valid range:
- `heartbeatRefreshIntervalSeconds`: 10-300
- `heartbeatRetryIntervalSeconds`: 10-300
- `configRefreshIntervalSeconds`: 30-3600
- `configRetryIntervalSeconds`: 30-3600
- Values outside the valid range will likely be rejected.
- Changes are propagated to all Secondary nodes.
## Edge Cases
- Setting very low refresh intervals could increase network traffic and load on the Primary node.
- Setting very high intervals could delay detection of configuration changes or node failures.
- Omitting all optional parameters effectively makes this a no-op that returns the current cluster state.