technitium 0.4.0

Typed async Rust client for the Technitium DNS Server API
Documentation
# List Store Apps

## Endpoint
`/api/apps/listStoreApps`

## Method
GET

## Description
Lists all available apps on the DNS App Store. Returns metadata about each app including whether it is already installed and if an update is available.

## Authentication
Required. Session token from `login` or `createToken`.

## Permissions
Apps: View

## Parameters

| Name  | Type   | Required | Conditional | Description |
|-------|--------|----------|-------------|-------------|
| 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 this API call is intended. When unspecified, the current node is used. This parameter can be used only when Clustering is initialized. |

## Response Fields

| Field | Type | Description |
|-------|------|-------------|
| response.storeApps | array | Array of store app objects. |
| response.storeApps[].name | string | Name of the app in the store. |
| response.storeApps[].version | string | Latest version available in the store. |
| response.storeApps[].description | string | Human-readable description of the app. |
| response.storeApps[].url | string | Download URL for the app zip file. |
| response.storeApps[].size | string | Human-readable file size of the app zip (e.g., "2.01 MB", "11.1 KB"). |
| response.storeApps[].installed | bool | Whether this app is currently installed on the server. |
| response.storeApps[].installedVersion | string | Version of the currently installed app. Only present when `installed` is `true`. |
| response.storeApps[].updateAvailable | bool | Whether an update is available for the installed app. Only present when `installed` is `true`. |

## Conditional Logic Notes
- The `node` parameter is only effective when Clustering is initialized on the DNS server.
- The fields `installedVersion` and `updateAvailable` are only present in the response when `installed` is `true`.

## Edge Cases
- Requires Internet access to the DNS App Store to retrieve the list. If the server cannot reach the store, the call may fail or return an empty list.
- The `size` field is a human-readable string (e.g., "2.01 MB"), not a numeric byte count.
- The `url` values point to external download locations (e.g., `https://download.technitium.com/dns/apps/...`).