mirror of
https://github.com/pablorevilla-meshtastic/meshview.git
synced 2026-03-04 23:27:46 +01:00
160 lines
3.9 KiB
Markdown
160 lines
3.9 KiB
Markdown
|
|
# API Documentation
|
|
|
|
## 1. Chat API
|
|
|
|
### GET `/api/chat`
|
|
Returns the most recent chat messages.
|
|
|
|
**Query Parameters**
|
|
- `limit` (optional, int): Maximum number of messages to return. Default: `100`.
|
|
|
|
**Response Example**
|
|
```json
|
|
{
|
|
"packets": [
|
|
{
|
|
"id": 123,
|
|
"import_time": "2025-07-22T12:45:00",
|
|
"from_node_id": 987654,
|
|
"from_node": "Alice",
|
|
"channel": "main",
|
|
"payload": "Hello, world!"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### GET `/api/chat/updates`
|
|
Returns chat messages imported after a given timestamp.
|
|
|
|
**Query Parameters**
|
|
- `last_time` (optional, ISO timestamp): Only messages imported after this time are returned.
|
|
|
|
**Response Example**
|
|
```json
|
|
{
|
|
"packets": [
|
|
{
|
|
"id": 124,
|
|
"import_time": "2025-07-22T12:50:00",
|
|
"from_node_id": 987654,
|
|
"from_node": "Alice",
|
|
"channel": "main",
|
|
"payload": "New message!"
|
|
}
|
|
],
|
|
"latest_import_time": "2025-07-22T12:50:00"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Nodes API
|
|
|
|
### GET `/api/nodes`
|
|
Returns a list of all nodes, with optional filtering by last seen.
|
|
|
|
**Query Parameters**
|
|
- `hours` (optional, int): Return nodes seen in the last N hours.
|
|
- `days` (optional, int): Return nodes seen in the last N days.
|
|
- `last_seen_after` (optional, ISO timestamp): Return nodes seen after this time.
|
|
|
|
**Response Example**
|
|
```json
|
|
{
|
|
"nodes": [
|
|
{
|
|
"node_id": 1234,
|
|
"long_name": "Alice",
|
|
"short_name": "A",
|
|
"channel": "main",
|
|
"last_seen": "2025-07-22T12:40:00",
|
|
"hardware": "T-Beam",
|
|
"firmware": "1.2.3",
|
|
"role": "client",
|
|
"last_lat": 37.7749,
|
|
"last_long": -122.4194
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Packets API
|
|
|
|
### GET `/api/packets`
|
|
Returns a list of packets with optional filters.
|
|
|
|
**Query Parameters**
|
|
- `limit` (optional, int): Maximum number of packets to return. Default: `200`.
|
|
- `since` (optional, ISO timestamp): Only packets imported after this timestamp are returned.
|
|
|
|
**Response Example**
|
|
```json
|
|
{
|
|
"packets": [
|
|
{
|
|
"id": 123,
|
|
"from_node_id": 5678,
|
|
"to_node_id": 91011,
|
|
"portnum": 1,
|
|
"import_time": "2025-07-22T12:45:00",
|
|
"payload": "Hello, Bob!"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### Notes
|
|
- All timestamps (`import_time`, `last_seen`) are returned in ISO 8601 format.
|
|
- `portnum` is an integer representing the packet type.
|
|
- `payload` is always a UTF-8 decoded string.
|
|
|
|
## 4 Statistics API: GET `/api/stats`
|
|
|
|
Retrieve packet statistics aggregated by time periods, with optional filtering.
|
|
|
|
---
|
|
|
|
## Query Parameters
|
|
|
|
| Parameter | Type | Required | Default | Description |
|
|
|--------------|---------|----------|----------|-------------------------------------------------------------------------------------------------|
|
|
| `period_type` | string | No | `hour` | Time granularity of the stats. Allowed values: `hour`, `day`. |
|
|
| `length` | integer | No | 24 | Number of periods to include (hours or days). |
|
|
| `channel` | string | No | — | Filter results by channel name (case-insensitive). |
|
|
| `portnum` | integer | No | — | Filter results by port number. |
|
|
| `to_node` | integer | No | — | Filter results to packets sent **to** this node ID. |
|
|
| `from_node` | integer | No | — | Filter results to packets sent **from** this node ID. |
|
|
|
|
---
|
|
|
|
## Response
|
|
|
|
```json
|
|
{
|
|
"period_type": "hour",
|
|
"length": 24,
|
|
"channel": "LongFast",
|
|
"portnum": 1,
|
|
"to_node": 12345678,
|
|
"from_node": 87654321,
|
|
"data": [
|
|
{
|
|
"period": "2025-08-08 14:00",
|
|
"count": 10
|
|
},
|
|
{
|
|
"period": "2025-08-08 15:00",
|
|
"count": 7
|
|
}
|
|
// more entries...
|
|
]
|
|
}
|