Files
home_automatization/laravel-app/routes/api.php
cacto e739ef5d38 Добавлен REST API для мобильного приложения (этап 3, без Telegram)
Токен-аутентификация Sanctum (login/logout по устройствам),
эндпоинты /api/v1 для зон/устройств/правил автоматизации с тем же
RBAC (owner/viewer), что и в веб-версии — контроллеры переиспользуют
существующие Policy и FormRequest. Устройства отдают живой статус
из Device Shadow (Redis) и историю телеметрии из ClickHouse, плюс
управление (turn-on/turn-off/set-level) через device-control-service.
2026-08-12 00:21:38 +05:00

39 lines
1.9 KiB
PHP

<?php
use App\Http\Controllers\Api\V1\AuthController;
use App\Http\Controllers\Api\V1\AutomationRuleController;
use App\Http\Controllers\Api\V1\DeviceController;
use App\Http\Controllers\Api\V1\DeviceTypeController;
use App\Http\Controllers\Api\V1\ZoneController;
use Illuminate\Support\Facades\Route;
Route::prefix('v1')->group(function () {
Route::post('/login', [AuthController::class, 'login']);
Route::middleware('auth:sanctum')->group(function () {
Route::post('/logout', [AuthController::class, 'logout']);
Route::get('/me', [AuthController::class, 'me']);
Route::get('/zones', [ZoneController::class, 'index']);
Route::post('/zones', [ZoneController::class, 'store']);
Route::put('/zones/{zone}', [ZoneController::class, 'update']);
Route::delete('/zones/{zone}', [ZoneController::class, 'destroy']);
Route::get('/device-types', [DeviceTypeController::class, 'index']);
Route::get('/devices', [DeviceController::class, 'index']);
Route::post('/devices', [DeviceController::class, 'store']);
Route::get('/devices/{device}', [DeviceController::class, 'show']);
Route::put('/devices/{device}', [DeviceController::class, 'update']);
Route::delete('/devices/{device}', [DeviceController::class, 'destroy']);
Route::post('/devices/{device}/turn-on', [DeviceController::class, 'turnOn']);
Route::post('/devices/{device}/turn-off', [DeviceController::class, 'turnOff']);
Route::post('/devices/{device}/set-level', [DeviceController::class, 'setLevel']);
Route::get('/automation-rules', [AutomationRuleController::class, 'index']);
Route::post('/automation-rules', [AutomationRuleController::class, 'store']);
Route::put('/automation-rules/{automation_rule}', [AutomationRuleController::class, 'update']);
Route::delete('/automation-rules/{automation_rule}', [AutomationRuleController::class, 'destroy']);
});
});