Add Waylume Manifesto and update API routes for peer management

This commit is contained in:
ImBenji
2025-08-17 21:57:09 +01:00
parent 8b63de7db2
commit ebfc01d927
2 changed files with 338 additions and 0 deletions

144
endpoints.md Normal file
View File

@@ -0,0 +1,144 @@
# API Endpoints
## Peer Management
---
### `GET /api/peers`
Returns peers currently on the WireGuard interface with optional status filtering.
**Query Parameters:**
- `status` (optional): Filter by peer status (`ALIVE` or `DEAD`)
**Examples:**
- `GET /api/peers` - Returns all peers
- `GET /api/peers?status=ALIVE` - Returns only active peers
- `GET /api/peers?status=DEAD` - Returns only inactive peers
**Response:**
```json
{
"success": true,
"peers": [
{
"public_key": "abc123...",
"ip_address": "10.0.0.5",
"last_handshake": "2024-01-01T12:00:00Z",
"minutes_since_handshake": 5,
"status": "ALIVE"
}
],
"total_count": 3,
"filter": "ALIVE"
}
```
---
### `POST /api/peer`
Creates a new peer and returns peer configuration along with server details.
**Response:**
```json
{
"peer": {
"ip": "10.0.0.5",
"privateKey": "...",
"publicKey": "..."
},
"server": {
"publicKey": "...",
"endpoint": "1.2.3.4:51820"
},
"success": true
}
```
---
### `DELETE /api/peer/<publicKey>`
Removes a peer from the WireGuard interface.
**URL Parameter:**
- `publicKey` - The peer's public key
**Example:** `DELETE /api/peer/abc123def456...`
**Response:
```json
{
"success": true,
"message": "Peer deleted successfully"
}
```
---
### `GET /api/peer/<publicKey>/config`
**Status:** Not implemented - returns 404.
**URL Parameter:**
- `publicKey` - The peer's public key
**Example:** `GET /api/peer/abc123def456.../config`
Peer configuration retrieval is not available as peer info is not stored persistently.
---
### `PATCH /api/peer/<publicKey>/speed-limit`
Sets traffic control speed limits for a peer.
**URL Parameter:**
- `publicKey` - The peer's public key
**Example:** `PATCH /api/peer/abc123def456.../speed-limit`
**Request Body:**
```json
{
"bytesPerSecond": 1048576
}
```
**Response:**
```json
{
"success": true,
"message": "Speed limit set successfully"
}
```
---
### `PATCH /api/peer/<publicKey>/data-cap`
Sets data usage quotas for a peer.
**URL Parameter:**
- `publicKey` - The peer's public key
**Example:** `PATCH /api/peer/abc123def456.../data-cap`
**Request Body:**
```json
{
"quotaBytes": 1073741824
}
```
**Response:**
```json
{
"success": true,
"message": "Data cap set successfully"
}
```
---
## Status Values
- `"ALIVE"` - Last handshake within 150 seconds
- `"DEAD"` - Last handshake >150 seconds ago
- `"No handshake yet"` - Peer exists but never had a handshake
- `"Peer not found in WireGuard"` - Peer doesn't exist in WG interface