## Система логирования
- действий пользователя, 
- самой системы, 
- скриптов, 
- и прочего.

**Доступно лишь администраторам и выше**

### LOG_ENTRY_STRUCT
```json
	{
		"id": 14,
		"type": "user", // user | group | device | script | event | system | [custom_type]  - (Для удобного поиска)
		"user_id": 38, // Может отсутствовать
		"group_alias": "some_group_alias", // Может отсутствовать
		"device_id": 18, // Может отсутствовать
		"script_alias": "script_alias", // Может отсутствовать
		"event_name": "button_press", // может отсутствовать
		"content": "Entry from log", // Обязательно должно что-то быть написано
		"create_at": "2025-05-05 13:45:59"
	}
	```

---

### POST `/api/v1/logs/new`
Добавить новую, кастомную запись в журнал.
- Для этого необходимо быть авторизированным
- Автоматически добавляемые поля:
	- `user_id` авторизованного пользователя
	- `group_alias` в которой состоит авторизованный пользователь  

#### Пример минимального запроса
```json 
	{
		"type": "custom_type",
		"content": "Information"
	}
	```

---

### GET `/api/v1/logs/list`
Получить последние 50 записей в журнале
- **Доступно админу и выше**

#### Пример ответа
```json
	{
		"status": "ok",
		"entries": [
			"LOG_ENTRY_STRUCT"
			// ...
		],
		"total": 1268
	}
	```

---

### GET `/api/v1/logs/list/filtered`
Получить фильтрованый, сортированый, порционный вывод записей.
- **Доступно админу и выше**
**Аргументы:**
- `by_user` - логи конкретного пользователя (ID)
- `by_group` - логи конкретной группы (alias)
- `by_device` - логи конкретного девайса (ID)
- `by_script` - логи конкретного скрипта (alias)
- `by_event` - логи конкретного события (название события)
- `by_type` - Фильтр по конкретным типам записей (user, group, device, script, event, system ...)
- `orderby` - Сортировать по указанному полю и порядок сортировки `field:ASC|DESC`
- `from` - показать записи начиная с указаной, например с 100 (с сотой записи)
- `limit` - показать ограниченное количество записей, по умолчанию 50

#### Пример запроса
- Вывести записи с 51 включительно по 100, группы `home`, типа `script`, сортированое по полю `id`, по убыванию.
`GET /api/v1/logs/list/filtered?by_group=home&by_type=script&orderby=id:DESC&from=51&limit=50`

#### Пример положительного ответа
```json
	{
		"status": "ok",
		"entries": [
			"LOG_ENTRY_STRUCT"
			// ...
		],
		"total": 168,
		"from": 51,
		"to": 100
	}
	```