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

Система скриптов

  • Все действия должны выполняться от имени авторизованого пользователя.
  • Cкриптами может управлять только администратор или выше.

SCRIPT_STRUCT

    {
        "id": 11,
        "alias": "bad_weather_light",
        "filename": "bad_weather_light.php",
        "path": "/home/smartserver/scripts",
        "state": "enabled", // | disabled
        "added_by": 12,// user_id
        "created_by": "Eugene Sukhodolskiy", // Автор скрипта, брать будет из самого скрипта
        "create_at": "2025-06-02 23:35:11"
    }

GET /api/v1/scripts/list

Получить список скриптов

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

    {
        "status": "ok",
        "scripts": [
            "SCRIPT_STRUCT"
            // ...
        ],
        "total": 10
    }

GET /api/v1/scripts/id/{{id}} OR GET /api/v1/scripts/alias/{{alias}}

Получить выбраный скрипт

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

    {
        "status": "ok",
        "scripts": "SCRIPT_STRUCT"
    }

POST /api/v1/scripts/new

Зарегистрировать в системе новый скрипт

  • По умолчанию, новый добавленый скрипт - не активен, имеет state=disabled

Пример запроса

    {
        "alias": "bad_weather_light",
        "filename": "bad_weather_light.php",
        "path": "/home/smartserver/scripts"
    }

Пример НЕ успешного ответа. Невалидные поля

    {
        "status": "error",
        "field": "alias",
        "message": "Alias already exists" // | "File not exists"
    }

POST /api/v1/scripts/id/{{id}}/update

Редактировать скрипт

Пример запроса

    {
        "alias": "bad_weather_light",
        "filename": "bad_weather_light.php",
        "path": "/home/smartserver/scripts",
        "id": 11 // id существующего скрипта
    }

Пример НЕ успешного ответа. Невалидные поля

    {
        "status": "error",
        "field": "alias",
        "message": "Alias already exists" // | "File not exists" | "Script by id not found"
    }

GET /api/v1/scripts/id/{{id}}/enable

Включить скрипт

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

    {
        "status": "ok",
        "scripts": "SCRIPT_STRUCT"
    }

GET /api/v1/scripts/id/{{id}}/disable

Отключить скрипт

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

    {
        "status": "ok",
        "scripts": "SCRIPT_STRUCT"
    }

GET /api/v1/scripts/id/{{id}}/remove

Удалить скрипт из системы. (Сам скрипт при этом вполне может оставаться в файловой системе)

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

    {
        "status": "ok",
        "scripts": "SCRIPT_STRUCT"
    }

POST /api/v1/scripts/id/{{id}}/run OR POST /api/v1/scripts/alias/{{alias}}/run

Запустить выполнение скрипта.

  • При этом проверяется от имени какого пользователя был запущен скрипт.
  • Если прав пользователя не хватает - скрипт не запуститься.
  • Можно передать параметры, если скрипт этого ожидает.

Пример запроса

    {
        "params": {
            // ...
        }
    }

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

    {
        "status": "ok",
        "script": "SCRIPT_STRUCT",
        "result": {
            // ...
        }
    }