- Add API specification documentation - Add system specification document - Add UI mockups and documentation - Add utility modules (wifi)
6.9 KiB
LED Controller API Specification
Base URL: http://device-ip/ or http://192.168.4.1/ (when in AP mode)
Protocol: HTTP/1.1
Content-Type: application/json
Presets API
GET /presets
List all presets.
Response: 200 OK
{
"preset1": {
"name": "preset1",
"pattern": "on",
"colors": [[255, 0, 0]],
"delay": 100,
"n1": 0,
"n2": 0,
"n3": 0,
"n4": 0,
"n5": 0,
"n6": 0,
"n7": 0,
"n8": 0
}
}
GET /presets/{name}
Get a specific preset by name.
Response: 200 OK
{
"name": "preset1",
"pattern": "on",
"colors": [[255, 0, 0]],
"delay": 100,
"n1": 0,
"n2": 0,
"n3": 0,
"n4": 0,
"n5": 0,
"n6": 0,
"n7": 0,
"n8": 0
}
Response: 404 Not Found
{
"error": "Preset not found"
}
POST /presets
Create a new preset.
Request Body:
{
"name": "preset1",
"pattern": "on",
"colors": [[255, 0, 0]],
"delay": 100,
"n1": 0,
"n2": 0,
"n3": 0,
"n4": 0,
"n5": 0,
"n6": 0,
"n7": 0,
"n8": 0
}
Response: 201 Created - Returns the created preset
Response: 400 Bad Request
{
"error": "Name is required"
}
Response: 409 Conflict
{
"error": "Preset already exists"
}
PUT /presets/{name}
Update an existing preset.
Request Body:
{
"delay": 200,
"colors": [[0, 255, 0]]
}
Response: 200 OK - Returns the updated preset
Response: 404 Not Found
{
"error": "Preset not found"
}
DELETE /presets/{name}
Delete a preset.
Response: 200 OK
{
"message": "Preset deleted successfully"
}
Response: 404 Not Found
{
"error": "Preset not found"
}
Profiles API
GET /profiles
List all profiles.
Response: 200 OK
{
"profile1": {
"name": "profile1",
"description": "Profile description",
"scenes": []
}
}
GET /profiles/{name}
Get a specific profile by name.
Response: 200 OK
{
"name": "profile1",
"description": "Profile description",
"scenes": []
}
Response: 404 Not Found
{
"error": "Profile not found"
}
POST /profiles
Create a new profile.
Request Body:
{
"name": "profile1",
"description": "Profile description",
"scenes": []
}
Response: 201 Created - Returns the created profile
Response: 400 Bad Request
{
"error": "Name is required"
}
Response: 409 Conflict
{
"error": "Profile already exists"
}
PUT /profiles/{name}
Update an existing profile.
Request Body:
{
"description": "Updated description"
}
Response: 200 OK - Returns the updated profile
Response: 404 Not Found
{
"error": "Profile not found"
}
DELETE /profiles/{name}
Delete a profile.
Response: 200 OK
{
"message": "Profile deleted successfully"
}
Response: 404 Not Found
{
"error": "Profile not found"
}
Scenes API
GET /scenes
List all scenes. Optionally filter by profile using query parameter.
Query Parameters:
profile(optional): Filter scenes by profile name
Example: GET /scenes?profile=profile1
Response: 200 OK
{
"profile1:scene1": {
"name": "scene1",
"profile_name": "profile1",
"description": "Scene description",
"transition_time": 0,
"devices": [
{"device_name": "device1", "preset_name": "preset1"},
{"device_name": "device2", "preset_name": "preset2"}
]
}
}
GET /scenes/{profile_name}/{scene_name}
Get a specific scene.
Response: 200 OK
{
"name": "scene1",
"profile_name": "profile1",
"description": "Scene description",
"transition_time": 0,
"devices": [
{"device_name": "device1", "preset_name": "preset1"},
{"device_name": "device2", "preset_name": "preset2"}
]
}
Response: 404 Not Found
{
"error": "Scene not found"
}
POST /scenes
Create a new scene.
Request Body:
{
"name": "scene1",
"profile_name": "profile1",
"description": "Scene description",
"transition_time": 0,
"devices": [
{"device_name": "device1", "preset_name": "preset1"},
{"device_name": "device2", "preset_name": "preset2"}
]
}
Response: 201 Created - Returns the created scene
Response: 400 Bad Request
{
"error": "Name is required"
}
or
{
"error": "Profile name is required"
}
Response: 409 Conflict
{
"error": "Scene already exists"
}
PUT /scenes/{profile_name}/{scene_name}
Update an existing scene.
Request Body:
{
"transition_time": 500,
"description": "Updated description"
}
Response: 200 OK - Returns the updated scene
Response: 404 Not Found
{
"error": "Scene not found"
}
DELETE /scenes/{profile_name}/{scene_name}
Delete a scene.
Response: 200 OK
{
"message": "Scene deleted successfully"
}
Response: 404 Not Found
{
"error": "Scene not found"
}
POST /scenes/{profile_name}/{scene_name}/devices
Add a device assignment to a scene.
Request Body:
{
"device_name": "device1",
"preset_name": "preset1"
}
Response: 200 OK - Returns the updated scene
Response: 400 Bad Request
{
"error": "Device name and preset name are required"
}
Response: 404 Not Found
{
"error": "Scene not found"
}
DELETE /scenes/{profile_name}/{scene_name}/devices/{device_name}
Remove a device assignment from a scene.
Response: 200 OK - Returns the updated scene
Response: 404 Not Found
{
"error": "Scene not found"
}
Patterns API
GET /patterns
Get the list of available pattern names.
Response: 200 OK
["on", "bl", "cl", "rb", "sb", "o"]
POST /patterns
Add a new pattern name to the list.
Request Body:
{
"name": "new_pattern"
}
Response: 201 Created - Returns the updated list of patterns
["on", "bl", "cl", "rb", "sb", "o", "new_pattern"]
Response: 400 Bad Request
{
"error": "Name is required"
}
Response: 409 Conflict
{
"error": "Pattern already exists"
}
DELETE /patterns/{name}
Remove a pattern name from the list.
Response: 200 OK
{
"message": "Pattern deleted successfully"
}
Response: 404 Not Found
{
"error": "Pattern not found"
}
Error Responses
All endpoints may return the following error responses:
400 Bad Request - Invalid request data
{
"error": "Error message"
}
404 Not Found - Resource not found
{
"error": "Resource not found"
}
409 Conflict - Resource already exists
{
"error": "Resource already exists"
}
500 Internal Server Error - Server error
{
"error": "Error message"
}