274 lines
6.0 KiB
JSON
274 lines
6.0 KiB
JSON
{
|
|
"protocol": "jarvis.skill.v1",
|
|
"id": "unifi.network",
|
|
"name": "UniFi Network",
|
|
"version": "1.0.0",
|
|
"description": "Lokale UniFi-Network-Integration über die offizielle Integration API.",
|
|
"runtime": {
|
|
"type": "process",
|
|
"command": "python3",
|
|
"args": [
|
|
"main.py"
|
|
],
|
|
"timeout_ms": 10000,
|
|
"env_from": [
|
|
"UNIFI_NETWORK_URL",
|
|
"UNIFI_API_KEY",
|
|
"UNIFI_VERIFY_TLS"
|
|
]
|
|
},
|
|
"permissions": {
|
|
"network": true,
|
|
"system_exec": true
|
|
},
|
|
"actions": [
|
|
{
|
|
"name": "info",
|
|
"description": "Prüft die UniFi-Network-API und liefert Versionsinformationen.",
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "list_sites",
|
|
"description": "Listet lokale UniFi-Network-Sites.",
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {},
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sites": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"count": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"sites",
|
|
"count"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
{
|
|
"name": "list_devices",
|
|
"description": "Listet adoptierte UniFi-Geräte einer Site.",
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"site_id": {
|
|
"type": "string"
|
|
},
|
|
"filter": {
|
|
"type": "string"
|
|
},
|
|
"limit": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"site_id"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"devices": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"count": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"devices",
|
|
"count"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
{
|
|
"name": "list_clients",
|
|
"description": "Listet verbundene Clients einer UniFi-Site; kann zur Anwesenheitserkennung genutzt werden.",
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"site_id": {
|
|
"type": "string"
|
|
},
|
|
"filter": {
|
|
"type": "string"
|
|
},
|
|
"limit": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"site_id"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"clients": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"count": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"clients",
|
|
"count"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
{
|
|
"name": "restart_device",
|
|
"description": "Startet ein adoptiertes UniFi-Gerät neu.",
|
|
"mutates": true,
|
|
"requires_confirmation": true,
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"site_id": {
|
|
"type": "string"
|
|
},
|
|
"device_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"site_id",
|
|
"device_id"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"accepted": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"accepted"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
{
|
|
"name": "power_cycle_port",
|
|
"description": "Führt einen PoE Power-Cycle auf einem Switch-Port aus.",
|
|
"mutates": true,
|
|
"requires_confirmation": true,
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"site_id": {
|
|
"type": "string"
|
|
},
|
|
"device_id": {
|
|
"type": "string"
|
|
},
|
|
"port_idx": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"site_id",
|
|
"device_id",
|
|
"port_idx"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"accepted": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"accepted"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
{
|
|
"name": "authorize_guest",
|
|
"description": "Autorisiert einen UniFi-Gastclient optional zeitlich begrenzt.",
|
|
"mutates": true,
|
|
"requires_confirmation": true,
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"site_id": {
|
|
"type": "string"
|
|
},
|
|
"client_id": {
|
|
"type": "string"
|
|
},
|
|
"time_limit_minutes": {
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [
|
|
"site_id",
|
|
"client_id"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "unauthorize_guest",
|
|
"description": "Entzieht einem UniFi-Gastclient den Netzwerkzugang.",
|
|
"mutates": true,
|
|
"requires_confirmation": true,
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"site_id": {
|
|
"type": "string"
|
|
},
|
|
"client_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"site_id",
|
|
"client_id"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
]
|
|
}
|