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

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

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

SCRIPT_STRUCT

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

GET /api/v1/scripts/actions/list

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

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

    {
        "status": true,
        "data": {
            "scripts": [
                {
                    "alias": "script_alias",
                    "name": "script name",
                    "description": "script description",
                    "filename": "TestScriptsScope.php",
                    "path": "/srv/http/smart-home-serv.local/server/ControlScripts",
                    "created_by": "Eugene Sukhodolskiy"
                }
            ],
            "total": 1
        }
    }

GET /api/v1/scripts/scopes/list

Получить scope list

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

    {
        "status": true,
        "data": {
            "scopes": [
                {
                    "name": "TestScriptsScope",
                    "filename": "TestScriptsScope.php",
                    "path": "/srv/http/smart-home-serv.local/server/ControlScripts"
                }
            ],
            "total": 1
        }
    }

GET /api/v1/scripts/regular/list

Получить scope list

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

    {
        "status": true,
        "data": {
            "scopes": [
                {
                    "name": "TestScriptsScope",
                    "filename": "TestScriptsScope.php",
                    "path": "/srv/http/smart-home-serv.local/server/ControlScripts"
                }
            ],
            "total": 1
        }
    }

GET /api/v1/scripts/scopes/name/{{filename}}

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

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

    <?php /* code */ ?>

POST /api/v1/scripts/scopes/new

Создать новый, пустой scope скриптов, с базовым шаблоном.

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

    {
        "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/scopes/name/{{name}}/update

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

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

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

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

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

GET /api/v1/scripts/actions/alias/{{alias}}/enable

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

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

    {
        "status": true
    }

GET /api/v1/scripts/actions/alias/{{alias}}/disable

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

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

    {
        "status": true
    }

GET /api/v1/scripts/actions/regular/{{alias}}/enable

Включить регулярный скрипт

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

    {
        "status": true
    }

GET /api/v1/scripts/actions/regular/{{alias}}/disable

Отключить регулярный скрипт

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

    {
        "status": true
    }

GET /api/v1/scripts/actions/scope/{{name}}/enable

Включить scope скриптов

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

    {
        "status": true
    }

GET /api/v1/scripts/actions/scope/{{name}}/disable

Отключить scope скриптов

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

    {
        "status": true
    }

GET /api/v1/scripts/scopes/name/{{name}}/remove

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

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

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

POST /api/v1/scripts/actions/run

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

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

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

    {
        "alias": "script_alias",
        "params": {
            // ...
        }
    }

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

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