Format dhcp_leases config file

This commit is contained in:
Markus Lorenz
2023-10-09 16:44:55 +02:00
parent bb10b865f9
commit 5c08b06ace

View File

@@ -5,77 +5,95 @@
"data_source": "script", "data_source": "script",
"data_filters": [ "data_filters": [
{ {
"compare_column" : "Object_PrimaryID", "compare_column": "Object_PrimaryID",
"compare_operator" : "==", "compare_operator": "==",
"compare_field_id": "txtMacFilter", "compare_field_id": "txtMacFilter",
"compare_js_template": "'{value}'.toString()", "compare_js_template": "'{value}'.toString()",
"compare_use_quotes": true "compare_use_quotes": true
} }
], ],
"show_ui": true, "show_ui": true,
"localized": ["display_name", "description", "icon"], "localized": [
"display_name",
"description",
"icon"
],
"mapped_to_table": "CurrentScan", "mapped_to_table": "CurrentScan",
"display_name" : [{ "display_name": [
"language_code":"en_us", {
"string" : "DHCP Leases (Device import)" "language_code": "en_us",
"string": "DHCP Leases (Device import)"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "DHCP Leases (Importación de dispositivos)" "string": "DHCP Leases (Importación de dispositivos)"
}], }
"icon":[{ ],
"language_code":"en_us", "icon": [
"string" : "<i class=\"fa-solid fa-hourglass-half\"></i>" {
}], "language_code": "en_us",
"description": [{ "string": "<i class=\"fa-solid fa-hourglass-half\"></i>"
"language_code":"en_us", }
"string" : "This plugin is to import devices from dhcp.leases files." ],
"description": [
{
"language_code": "en_us",
"string": "This plugin is to import devices from dhcp.leases files."
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Este plugin es para importar dispositivos desde archivos dhcp.leases." "string": "Este plugin es para importar dispositivos desde archivos dhcp.leases."
}], }
"params" : [ ],
"params": [
{ {
"name" : "paths", "name": "paths",
"type" : "setting", "type": "setting",
"value" : "DHCPLSS_paths_to_check" "value": "DHCPLSS_paths_to_check"
}], }
"database_column_definitions": ],
[ "database_column_definitions": [
{ {
"column": "Index", "column": "Index",
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": false, "show": false,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "N/A" "name": [
{
"language_code": "en_us",
"string": "N/A"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "N/A" "string": "N/A"
}] }
} , ]
},
{ {
"column": "Plugin", "column": "Plugin",
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": false, "show": false,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "N/A" "name": [
{
"language_code": "en_us",
"string": "N/A"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "N/A" "string": "N/A"
}] }
]
}, },
{ {
"column": "Object_PrimaryID", "column": "Object_PrimaryID",
@@ -83,17 +101,21 @@
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": true, "show": true,
"type": "device_mac", "type": "device_mac",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "MAC address" "name": [
{
"language_code": "en_us",
"string": "MAC address"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Dirección MAC" "string": "Dirección MAC"
}] }
]
}, },
{ {
"column": "Object_SecondaryID", "column": "Object_SecondaryID",
@@ -101,34 +123,42 @@
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": true, "show": true,
"type": "device_ip", "type": "device_ip",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "IP" "name": [
{
"language_code": "en_us",
"string": "IP"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "IP" "string": "IP"
}] }
} , ]
},
{ {
"column": "DateTimeCreated", "column": "DateTimeCreated",
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": true, "show": true,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "Created" "name": [
{
"language_code": "en_us",
"string": "Created"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Creado" "string": "Creado"
}] }
]
}, },
{ {
"column": "DateTimeChanged", "column": "DateTimeChanged",
@@ -136,34 +166,42 @@
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": true, "show": true,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "Changed" "name": [
{
"language_code": "en_us",
"string": "Changed"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Cambiado" "string": "Cambiado"
}] }
]
}, },
{ {
"column": "Watched_Value1", "column": "Watched_Value1",
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": true, "show": true,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "Is active" "name": [
{
"language_code": "en_us",
"string": "Is active"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Está activo" "string": "Está activo"
}] }
]
}, },
{ {
"column": "Watched_Value2", "column": "Watched_Value2",
@@ -171,85 +209,105 @@
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": true, "show": true,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "Hostname" "name": [
{
"language_code": "en_us",
"string": "Hostname"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Nombre de host" "string": "Nombre de host"
}] }
]
}, },
{ {
"column": "Watched_Value3", "column": "Watched_Value3",
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": true, "show": true,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "Hardware" "name": [
{
"language_code": "en_us",
"string": "Hardware"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Hardware" "string": "Hardware"
}] }
} , ]
},
{ {
"column": "Watched_Value4", "column": "Watched_Value4",
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": true, "show": true,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "State" "name": [
{
"language_code": "en_us",
"string": "State"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Estado" "string": "Estado"
}] }
} , ]
},
{ {
"column": "UserData", "column": "UserData",
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": false, "show": false,
"type": "textbox_save", "type": "textbox_save",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "Comments" "name": [
{
"language_code": "en_us",
"string": "Comments"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Comentarios" "string": "Comentarios"
}] }
]
}, },
{ {
"column": "Extra", "column": "Extra",
"css_classes": "col-sm-3", "css_classes": "col-sm-3",
"show": true, "show": true,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "DHCP leases file" "name": [
{
"language_code": "en_us",
"string": "DHCP leases file"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Archivo DHCP leases" "string": "Archivo DHCP leases"
}] }
]
}, },
{ {
"column": "ScanMethod", "column": "ScanMethod",
@@ -260,24 +318,28 @@
"css_classes": "col-sm-2", "css_classes": "col-sm-2",
"show": true, "show": true,
"type": "label", "type": "label",
"default_value":"", "default_value": "",
"options": [], "options": [],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "Scan method" "name": [
{
"language_code": "en_us",
"string": "Scan method"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Método de escaneo" "string": "Método de escaneo"
}] }
]
}, },
{ {
"column": "Status", "column": "Status",
"css_classes": "col-sm-1", "css_classes": "col-sm-1",
"show": true, "show": true,
"type": "replace", "type": "replace",
"default_value":"", "default_value": "",
"options": [ "options": [
{ {
"equals": "watched-not-changed", "equals": "watched-not-changed",
@@ -296,183 +358,263 @@
"replacement": "<div style='text-align:center'><i class='fa-solid fa-question'></i></div>" "replacement": "<div style='text-align:center'><i class='fa-solid fa-question'></i></div>"
} }
], ],
"localized": ["name"], "localized": [
"name":[{ "name"
"language_code":"en_us", ],
"string" : "Status" "name": [
{
"language_code": "en_us",
"string": "Status"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Estado" "string": "Estado"
}] }
]
} }
], ],
"settings":[ "settings": [
{ {
"function": "RUN", "function": "RUN",
"events": ["run"], "events": [
"run"
],
"type": "text.select", "type": "text.select",
"default_value":"disabled", "default_value": "disabled",
"options": ["disabled", "once", "schedule", "always_after_scan", "on_new_device"], "options": [
"localized": ["name", "description"], "disabled",
"name" :[{ "once",
"language_code":"en_us", "schedule",
"string" : "When to run" "always_after_scan",
"on_new_device"
],
"localized": [
"name",
"description"
],
"name": [
{
"language_code": "en_us",
"string": "When to run"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Cuándo ejecutar" "string": "Cuándo ejecutar"
}], }
"description": [{ ],
"language_code":"en_us", "description": [
"string" : "Enable import of devices from <code>dhcp.leases</code> files. If you select <code>schedule</code> the scheduling settings from below are applied. If you select <code>once</code> the scan is run only once on start of the application (container) or after you update your settings." {
"language_code": "en_us",
"string": "Enable import of devices from <code>dhcp.leases</code> files. If you select <code>schedule</code> the scheduling settings from below are applied. If you select <code>once</code> the scan is run only once on start of the application (container) or after you update your settings."
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Habilite la importación de dispositivos desde archivos <code>dhcp.leases</code>. Si selecciona <code>schedule</code>, se aplican las configuraciones de programación de abajo. Si selecciona <code>once</code>, el análisis se ejecuta solo una vez al inicio de la aplicación (contenedor) o después de actualizar su configuración." "string": "Habilite la importación de dispositivos desde archivos <code>dhcp.leases</code>. Si selecciona <code>schedule</code>, se aplican las configuraciones de programación de abajo. Si selecciona <code>once</code>, el análisis se ejecuta solo una vez al inicio de la aplicación (contenedor) o después de actualizar su configuración."
}] }
]
}, },
{ {
"function": "CMD", "function": "CMD",
"type": "text", "type": "text",
"default_value":"python3 /home/pi/pialert/front/plugins/dhcp_leases/script.py paths={paths}", "default_value": "python3 /home/pi/pialert/front/plugins/dhcp_leases/script.py paths={paths}",
"options": [], "options": [],
"localized": ["name", "description"], "localized": [
"name" : [{ "name",
"language_code":"en_us", "description"
"string" : "Command" ],
"name": [
{
"language_code": "en_us",
"string": "Command"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Comando" "string": "Comando"
}], }
"description": [{ ],
"language_code":"en_us", "description": [
"string" : "Command to run" {
"language_code": "en_us",
"string": "Command to run"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Comando a ejecutar" "string": "Comando a ejecutar"
}] }
]
}, },
{ {
"function": "paths_to_check", "function": "paths_to_check",
"type": "list", "type": "list",
"default_value":["/mnt/dhcp1.leases", "/mnt/dhcp2.leases"], "default_value": [
"/mnt/dhcp1.leases",
"/mnt/dhcp2.leases"
],
"options": [], "options": [],
"localized": ["name", "description"], "localized": [
"name" : [{ "name",
"language_code":"en_us", "description"
"string" : "Files" ],
"name": [
{
"language_code": "en_us",
"string": "Files"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Archivos" "string": "Archivos"
}], }
"description": [{ ],
"language_code":"en_us", "description": [
"string" : "Add all dhcp.leases mapped paths to watch. Enter full path within the container, e.g. <code>/mnt/dhcp2.leases</code>. You must map these files accordingly in your <code>docker-compose.yml</code> file. (If you are mapping a PiHole dhcp.leases file the path in the container must contain <code>pihole</code>, e.g.: <code>:/etc/pihole/dhcp.leases</code>)" {
"language_code": "en_us",
"string": "Add all dhcp.leases mapped paths to watch. Enter full path within the container, e.g. <code>/mnt/dhcp2.leases</code>. You must map these files accordingly in your <code>docker-compose.yml</code> file. (If you are mapping a PiHole dhcp.leases file the path in the container must contain <code>pihole</code>, e.g.: <code>:/etc/pihole/dhcp.leases</code>)"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Agregue todas las rutas asignadas de dhcp.leases para observar. Ingrese la ruta completa dentro del contenedor, p.e. <code>/mnt/dhcp2.leases</code>. Debe asignar estos archivos en consecuencia en su archivo <code>docker-compose.yml</code>. (Si está asignando un archivo PiHole dhcp.leases, la ruta en el contenedor debe contener <code>pihole</code>, por ejemplo: <code>:/etc/pihole/dhcp.leases</code>)" "string": "Agregue todas las rutas asignadas de dhcp.leases para observar. Ingrese la ruta completa dentro del contenedor, p.e. <code>/mnt/dhcp2.leases</code>. Debe asignar estos archivos en consecuencia en su archivo <code>docker-compose.yml</code>. (Si está asignando un archivo PiHole dhcp.leases, la ruta en el contenedor debe contener <code>pihole</code>, por ejemplo: <code>:/etc/pihole/dhcp.leases</code>)"
}] }
]
}, },
{ {
"function": "RUN_SCHD", "function": "RUN_SCHD",
"type": "text", "type": "text",
"default_value":"0 2 * * *", "default_value": "0 2 * * *",
"options": [], "options": [],
"localized": ["name", "description"], "localized": [
"name" : [{ "name",
"language_code":"en_us", "description"
"string" : "Schedule" ],
"name": [
{
"language_code": "en_us",
"string": "Schedule"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Schedule" "string": "Schedule"
}], }
"description": [{ ],
"language_code":"en_us", "description": [
"string" : "Only enabled if you select <code>schedule</code> in the <a href=\"#DHCPLSS_RUN\"><code>DHCPLSS_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format (e.g. validate at <a href=\"https://crontab.guru/\" target=\"_blank\">crontab.guru</a>). For example entering <code>0 4 * * *</code> will run the scan after 4 am in the <a onclick=\"toggleAllSettings()\" href=\"#TIMEZONE\"><code>TIMEZONE</code> you set above</a>. Will be run NEXT time the time passes. <br/> It's recommended to use the same schedule interval for all plugins responsible for discovering new devices." {
"language_code": "en_us",
"string": "Only enabled if you select <code>schedule</code> in the <a href=\"#DHCPLSS_RUN\"><code>DHCPLSS_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format (e.g. validate at <a href=\"https://crontab.guru/\" target=\"_blank\">crontab.guru</a>). For example entering <code>0 4 * * *</code> will run the scan after 4 am in the <a onclick=\"toggleAllSettings()\" href=\"#TIMEZONE\"><code>TIMEZONE</code> you set above</a>. Will be run NEXT time the time passes. <br/> It's recommended to use the same schedule interval for all plugins responsible for discovering new devices."
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Solo está habilitado si selecciona <code>schedule</code> en la configuración <a href=\"#DHCPLSS_RUN\"><code>DHCPLSS_RUN</code></a>. Asegúrese de ingresar la programación en el formato similar a cron correcto (por ejemplo, valide en <a href=\"https://crontab.guru/\" target=\"_blank\">crontab.guru</a>). Por ejemplo, ingresar <code>0 4 * * *</code> ejecutará el escaneo después de las 4 a.m. en el <a onclick=\"toggleAllSettings()\" href=\"#TIMEZONE\"><code>TIMEZONE</ código> que configuró arriba</a>. Se ejecutará la PRÓXIMA vez que pase el tiempo." "string": "Solo está habilitado si selecciona <code>schedule</code> en la configuración <a href=\"#DHCPLSS_RUN\"><code>DHCPLSS_RUN</code></a>. Asegúrese de ingresar la programación en el formato similar a cron correcto (por ejemplo, valide en <a href=\"https://crontab.guru/\" target=\"_blank\">crontab.guru</a>). Por ejemplo, ingresar <code>0 4 * * *</code> ejecutará el escaneo después de las 4 a.m. en el <a onclick=\"toggleAllSettings()\" href=\"#TIMEZONE\"><code>TIMEZONE</ código> que configuró arriba</a>. Se ejecutará la PRÓXIMA vez que pase el tiempo."
}] }
]
}, },
{ {
"function": "RUN_TIMEOUT", "function": "RUN_TIMEOUT",
"type": "integer", "type": "integer",
"default_value":5, "default_value": 5,
"options": [], "options": [],
"localized": ["name", "description"], "localized": [
"name" : [{ "name",
"language_code":"en_us", "description"
"string" : "Run timeout" ],
"name": [
{
"language_code": "en_us",
"string": "Run timeout"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Tiempo de espera de ejecución" "string": "Tiempo de espera de ejecución"
}, },
{ {
"language_code":"de_de", "language_code": "de_de",
"string" : "Wartezeit" "string": "Wartezeit"
}], }
"description": [{ ],
"language_code":"en_us", "description": [
"string" : "Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted." {
"language_code": "en_us",
"string": "Maximum time in seconds to wait for the script to finish. If this time is exceeded the script is aborted."
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Tiempo máximo en segundos para esperar a que finalice el script. Si se supera este tiempo, el script se cancela." "string": "Tiempo máximo en segundos para esperar a que finalice el script. Si se supera este tiempo, el script se cancela."
}] }
]
}, },
{ {
"function": "WATCH", "function": "WATCH",
"type": "text.multiselect", "type": "text.multiselect",
"default_value":["Watched_Value1", "Watched_Value4"], "default_value": [
"options": ["Watched_Value1","Watched_Value2","Watched_Value3","Watched_Value4"], "Watched_Value1",
"localized": ["name", "description"], "Watched_Value4"
"name" :[{ ],
"language_code":"en_us", "options": [
"string" : "Watched" "Watched_Value1",
"Watched_Value2",
"Watched_Value3",
"Watched_Value4"
],
"localized": [
"name",
"description"
],
"name": [
{
"language_code": "en_us",
"string": "Watched"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Visto" "string": "Visto"
}] , }
"description":[{ ],
"language_code":"en_us", "description": [
"string" : "Send a notification if selected values change. Use <code>CTRL + Click</code> to select/deselect. <ul> <li><code>Watched_Value1</code> is Active </li><li><code>Watched_Value2</code> is Hostname </li><li><code>Watched_Value3</code> is hardware </li><li><code>Watched_Value4</code> is State </li></ul>" {
"language_code": "en_us",
"string": "Send a notification if selected values change. Use <code>CTRL + Click</code> to select/deselect. <ul> <li><code>Watched_Value1</code> is Active </li><li><code>Watched_Value2</code> is Hostname </li><li><code>Watched_Value3</code> is hardware </li><li><code>Watched_Value4</code> is State </li></ul>"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Enviar una notificación si los valores seleccionados cambian. Utilice <code>CTRL + clic</code> para seleccionar/deseleccionar. <ul> <li><code>Watched_Value1</code> está activo </li><li><code>Watched_Value2</code> es el nombre de host </li><li><code>Watched_Value3</code > es hardware </li><li><code>Watched_Value4</code> es Estado </li></ul>" "string": "Enviar una notificación si los valores seleccionados cambian. Utilice <code>CTRL + clic</code> para seleccionar/deseleccionar. <ul> <li><code>Watched_Value1</code> está activo </li><li><code>Watched_Value2</code> es el nombre de host </li><li><code>Watched_Value3</code > es hardware </li><li><code>Watched_Value4</code> es Estado </li></ul>"
}] }
]
}, },
{ {
"function": "REPORT_ON", "function": "REPORT_ON",
"type": "text.multiselect", "type": "text.multiselect",
"default_value":["new","watched-changed"], "default_value": [
"options": ["new","watched-changed","watched-not-changed", "missing-in-last-scan"], "new",
"localized": ["name", "description"], "watched-changed"
"name" :[{ ],
"language_code":"en_us", "options": [
"string" : "Report on" "new",
"watched-changed",
"watched-not-changed",
"missing-in-last-scan"
],
"localized": [
"name",
"description"
],
"name": [
{
"language_code": "en_us",
"string": "Report on"
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Informar sobre" "string": "Informar sobre"
} ] , }
"description":[{ ],
"language_code":"en_us", "description": [
"string" : "Send a notification only on these statuses. <code>new</code> means a new unique (unique combination of PrimaryId and SecondaryId) object was discovered. <code>watched-changed</code> means that selected <code>Watched_ValueN</code> columns changed." {
"language_code": "en_us",
"string": "Send a notification only on these statuses. <code>new</code> means a new unique (unique combination of PrimaryId and SecondaryId) object was discovered. <code>watched-changed</code> means that selected <code>Watched_ValueN</code> columns changed."
}, },
{ {
"language_code":"es_es", "language_code": "es_es",
"string" : "Envíe una notificación solo en estos estados. <code>new</code> significa que se descubrió un nuevo objeto único (una combinación única de PrimaryId y SecondaryId). <code>watched-changed</code> significa que las columnas <code>Watched_ValueN</code> seleccionadas cambiaron." "string": "Envíe una notificación solo en estos estados. <code>new</code> significa que se descubrió un nuevo objeto único (una combinación única de PrimaryId y SecondaryId). <code>watched-changed</code> significa que las columnas <code>Watched_ValueN</code> seleccionadas cambiaron."
}] }
]
} }
] ]
} }