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

### SCRIPT_STRUCT
```json
	{
		"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`
Получить список скриптов

#### Пример ответа
```json
	{
		"status": true,
		"data": {
			"scripts": [
				{
					"alias": "script_alias",
					"name": "script name",
					"state": "enabled",
					"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

#### Пример ответа
```json
	{
		"status": true,
		"data": {
			"scopes": [
				{
					"name": "TestScriptsScope",
					"filename": "TestScriptsScope.php",
					"state": "enabled",
					"path": "/srv/http/smart-home-serv.local/server/ControlScripts"
				}
			],
			"total": 1
		}
	}
	```

---

### GET `/api/v1/scripts/regular/list`
Получить scope list

#### Пример ответа
```json
	{
		"status": true,
		"data": {
			"scopes": [
				{
					"alias": "script_alias",
					"name": "script name",
					"state": "enabled",
					"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/name/{{filename}}`
Получить выбраный скрипт

#### Пример ответа
```php
	<?php /* code */ ?>
	```

---

### POST `/api/v1/scripts/scopes/new`
Создать новый, пустой scope скриптов, с базовым шаблоном.

#### Пример запроса
```json
	{
		"alias": "bad_weather_light",
		"filename": "bad_weather_light.php",
		"path": "/home/smartserver/scripts"
	}
	```

#### Пример НЕ успешного ответа. Невалидные поля
```json
	{
		"status": "error",
		"field": "alias",
		"message": "Alias already exists" // | "File not exists"
	}
	```

---

### POST `/api/v1/scripts/scopes/update`
Редактировать scope скриптов

#### Пример запроса
```json
	{
		"name": "bad_weather_light",
		"filename": "bad_weather_light.php",
		"path": "/home/smartserver/scripts",
	}
	```

#### Пример НЕ успешного ответа. Невалидные поля
```json
	{
		"status": false,
		"field": "name",
		"message": "File not exists" // | "Scope name not found"
	}
	```

---

### GET `/api/v1/scripts/actions/alias/{{alias}}/enable`
Включить скрипт

#### Пример ответа
```json
	{
		"status": true
	}
	```

---

### GET `/api/v1/scripts/actions/alias/{{alias}}/disable`
Отключить скрипт

#### Пример ответа
```json
	{
		"status": true
	}
	```

---

### GET `/api/v1/scripts/actions/regular/{{alias}}/enable`
Включить регулярный скрипт

#### Пример ответа
```json
	{
		"status": true
	}
	```

---

### GET `/api/v1/scripts/actions/regular/{{alias}}/disable`
Отключить регулярный скрипт

#### Пример ответа
```json
	{
		"status": true
	}
	```

---

### GET `/api/v1/scripts/actions/scope/{{name}}/enable`
Включить scope скриптов

#### Пример ответа
```json
	{
		"status": true
	}
	```

---

### GET `/api/v1/scripts/actions/scope/{{name}}/disable`
Отключить scope скриптов

#### Пример ответа
```json
	{
		"status": true
	}
	```

---

### GET `/api/v1/scripts/scopes/name/{{name}}/remove`
Удалить скрипт из системы. (Сам скрипт при этом вполне может оставаться в файловой системе)

#### Пример ответа
```json
	{
		"status": true,
		"scripts": "SCRIPT_STRUCT"
	}
	```

---

### POST `/api/v1/scripts/actions/run`
Запустить выполнение скрипта. 
- При этом проверяется от имени какого пользователя был запущен скрипт. 
- Если прав пользователя не хватает - скрипт не запуститься.
- Можно передать параметры, если скрипт этого ожидает.

#### Пример запроса
```json
	{
		"alias": "script_alias",
		"params": {
			// ...
		}
	}
	```

#### Пример ответа
```json
	{
		"status": true,
		"script": "SCRIPT_STRUCT",
		"result": {
			// ...
		}
	}
	```

