mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-09-30 03:01:21 +02:00
306 lines
7.1 KiB
Markdown
306 lines
7.1 KiB
Markdown
# API Reference
|
|
|
|
Bambuddy provides a REST API for programmatic access to all features.
|
|
|
|
## Interactive Documentation
|
|
|
|
When Bambuddy is running, access interactive API docs:
|
|
|
|
- **Swagger UI**: http://localhost:8000/docs
|
|
- **ReDoc**: http://localhost:8000/redoc
|
|
|
|
These provide:
|
|
- Complete endpoint documentation
|
|
- Request/response schemas
|
|
- Try-it-out functionality
|
|
- Authentication details
|
|
|
|
---
|
|
|
|
## Base URL
|
|
|
|
```
|
|
http://localhost:8000/api/v1
|
|
```
|
|
|
|
Replace `localhost:8000` with your server address.
|
|
|
|
---
|
|
|
|
## Authentication
|
|
|
|
Currently, Bambuddy does not require authentication for API access. The API is intended for local network use.
|
|
|
|
> **Note**: Future versions may add authentication. Keep your Bambuddy instance on a trusted network.
|
|
|
|
---
|
|
|
|
## Endpoints Overview
|
|
|
|
### Printers
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/printers` | List all printers |
|
|
| POST | `/printers` | Add a new printer |
|
|
| GET | `/printers/{id}` | Get printer details |
|
|
| PUT | `/printers/{id}` | Update printer |
|
|
| DELETE | `/printers/{id}` | Delete printer |
|
|
| POST | `/printers/{id}/connect` | Connect to printer |
|
|
| POST | `/printers/{id}/disconnect` | Disconnect from printer |
|
|
|
|
### Archives
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/archives` | List all archives |
|
|
| GET | `/archives/{id}` | Get archive details |
|
|
| DELETE | `/archives/{id}` | Delete archive |
|
|
| POST | `/archives/{id}/reprint` | Send to printer |
|
|
| GET | `/archives/{id}/download` | Download 3MF file |
|
|
| POST | `/archives/{id}/photos` | Upload photo |
|
|
|
|
### Print Queue
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/queue` | List all queue items |
|
|
| POST | `/queue` | Add to queue |
|
|
| GET | `/queue/{id}` | Get queue item |
|
|
| DELETE | `/queue/{id}` | Remove from queue |
|
|
| PUT | `/queue/{id}/reorder` | Change queue position |
|
|
| POST | `/queue/{id}/cancel` | Cancel queued print |
|
|
|
|
### Smart Plugs
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/smart-plugs` | List all smart plugs |
|
|
| POST | `/smart-plugs` | Add smart plug |
|
|
| GET | `/smart-plugs/{id}` | Get plug details |
|
|
| PUT | `/smart-plugs/{id}` | Update plug |
|
|
| DELETE | `/smart-plugs/{id}` | Delete plug |
|
|
| POST | `/smart-plugs/{id}/on` | Turn on |
|
|
| POST | `/smart-plugs/{id}/off` | Turn off |
|
|
| GET | `/smart-plugs/{id}/status` | Get current status |
|
|
|
|
### Notifications
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/notifications/providers` | List providers |
|
|
| POST | `/notifications/providers` | Add provider |
|
|
| PUT | `/notifications/providers/{id}` | Update provider |
|
|
| DELETE | `/notifications/providers/{id}` | Delete provider |
|
|
| POST | `/notifications/providers/{id}/test` | Send test |
|
|
| GET | `/notifications/templates` | Get templates |
|
|
| PUT | `/notifications/templates/{event}` | Update template |
|
|
|
|
### Settings
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/settings` | Get all settings |
|
|
| PUT | `/settings` | Update settings |
|
|
| GET | `/settings/filaments` | List filaments |
|
|
| POST | `/settings/filaments` | Add filament |
|
|
|
|
### Maintenance
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/maintenance/types` | List maintenance types |
|
|
| POST | `/maintenance/types` | Create type |
|
|
| GET | `/maintenance/status` | Get maintenance status |
|
|
| POST | `/maintenance/log` | Log maintenance |
|
|
|
|
### Cloud Profiles
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/cloud/profiles` | List profiles |
|
|
| POST | `/cloud/sync` | Sync with cloud |
|
|
| GET | `/cloud/profiles/{id}` | Get profile |
|
|
| POST | `/cloud/templates` | Create template |
|
|
|
|
### Updates
|
|
|
|
| Method | Endpoint | Description |
|
|
|--------|----------|-------------|
|
|
| GET | `/updates/check` | Check for updates |
|
|
| POST | `/updates/apply` | Apply update |
|
|
| GET | `/updates/status` | Get update status |
|
|
|
|
---
|
|
|
|
## WebSocket
|
|
|
|
Real-time updates via WebSocket:
|
|
|
|
```
|
|
ws://localhost:8000/api/v1/ws
|
|
```
|
|
|
|
### Connection
|
|
```javascript
|
|
const ws = new WebSocket('ws://localhost:8000/api/v1/ws');
|
|
|
|
ws.onmessage = (event) => {
|
|
const data = JSON.parse(event.data);
|
|
console.log('Event:', data.type, data.payload);
|
|
};
|
|
```
|
|
|
|
### Event Types
|
|
|
|
| Event | Description |
|
|
|-------|-------------|
|
|
| `printer_state` | Printer status update |
|
|
| `print_progress` | Print progress update |
|
|
| `print_complete` | Print finished |
|
|
| `print_failed` | Print failed |
|
|
| `queue_update` | Queue changed |
|
|
| `notification` | System notification |
|
|
|
|
### Message Format
|
|
```json
|
|
{
|
|
"type": "printer_state",
|
|
"printer_id": 1,
|
|
"payload": {
|
|
"status": "printing",
|
|
"progress": 45,
|
|
"nozzle_temp": 210,
|
|
"bed_temp": 60
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Common Response Formats
|
|
|
|
### Success Response
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": { ... }
|
|
}
|
|
```
|
|
|
|
### Error Response
|
|
```json
|
|
{
|
|
"success": false,
|
|
"error": {
|
|
"code": "PRINTER_NOT_FOUND",
|
|
"message": "Printer with ID 123 not found"
|
|
}
|
|
}
|
|
```
|
|
|
|
### List Response
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": [ ... ],
|
|
"pagination": {
|
|
"total": 100,
|
|
"page": 1,
|
|
"per_page": 20
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Example Requests
|
|
|
|
### List Printers
|
|
```bash
|
|
curl http://localhost:8000/api/v1/printers
|
|
```
|
|
|
|
### Add Printer
|
|
```bash
|
|
curl -X POST http://localhost:8000/api/v1/printers \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"name": "Workshop X1C",
|
|
"ip_address": "192.168.1.100",
|
|
"access_code": "12345678",
|
|
"serial_number": "00M00A000000000"
|
|
}'
|
|
```
|
|
|
|
### Get Archives
|
|
```bash
|
|
curl "http://localhost:8000/api/v1/archives?limit=10&offset=0"
|
|
```
|
|
|
|
### Schedule Print
|
|
```bash
|
|
curl -X POST http://localhost:8000/api/v1/queue \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"archive_id": 42,
|
|
"printer_id": 1,
|
|
"scheduled_time": "2024-01-15T14:00:00Z",
|
|
"auto_power_off": true
|
|
}'
|
|
```
|
|
|
|
### Control Smart Plug
|
|
```bash
|
|
# Turn on
|
|
curl -X POST http://localhost:8000/api/v1/smart-plugs/1/on
|
|
|
|
# Turn off
|
|
curl -X POST http://localhost:8000/api/v1/smart-plugs/1/off
|
|
```
|
|
|
|
### Send Test Notification
|
|
```bash
|
|
curl -X POST http://localhost:8000/api/v1/notifications/providers/1/test
|
|
```
|
|
|
|
---
|
|
|
|
## Rate Limiting
|
|
|
|
Currently no rate limiting is implemented. For high-frequency polling, consider using WebSocket instead.
|
|
|
|
---
|
|
|
|
## Error Codes
|
|
|
|
| Code | Description |
|
|
|------|-------------|
|
|
| `PRINTER_NOT_FOUND` | Printer ID doesn't exist |
|
|
| `PRINTER_OFFLINE` | Printer not connected |
|
|
| `ARCHIVE_NOT_FOUND` | Archive ID doesn't exist |
|
|
| `QUEUE_ITEM_NOT_FOUND` | Queue item doesn't exist |
|
|
| `PLUG_NOT_FOUND` | Smart plug doesn't exist |
|
|
| `PLUG_OFFLINE` | Smart plug not responding |
|
|
| `INVALID_REQUEST` | Request validation failed |
|
|
| `FTP_ERROR` | File transfer failed |
|
|
| `MQTT_ERROR` | Printer communication failed |
|
|
|
|
---
|
|
|
|
## SDK / Client Libraries
|
|
|
|
No official client libraries yet. The API is standard REST and can be consumed with:
|
|
- `fetch` / `axios` (JavaScript)
|
|
- `requests` / `httpx` (Python)
|
|
- `curl` (command line)
|
|
- Any HTTP client
|
|
|
|
---
|
|
|
|
## Webhooks (Outgoing)
|
|
|
|
Configure outgoing webhooks in notification settings. Bambuddy sends POST requests to your URL with JSON payloads for print events.
|
|
|
|
See [Push Notifications](Features-Notifications#webhook-generic) for details.
|