Newer
Older
smart-home-server / docs / server-api-v1 / logs.md

Система логирования

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

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

LOG_ENTRY_STRUCT

    {
        "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 в которой состоит авторизованный пользователь

Пример минимального запроса

    {
        "type": "custom_type",
        "content": "Information"
    }

GET /api/v1/logs/list

Получить последние 50 записей в журнале

  • Доступно админу и выше

Пример ответа

    {
        "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

Пример положительного ответа

    {
        "status": "ok",
        "entries": [
            "LOG_ENTRY_STRUCT"
            // ...
        ],
        "total": 168,
        "from": 51,
        "to": 100
    }