[comment]: # ({7669b1c2-7669b1c2})
# 1 Protocollo di scambio dati server-proxy

[comment]: # ({/7669b1c2-7669b1c2})

[comment]: # ({7382efcd-7382efcd})
#### Panoramica

Lo scambio di dati server - proxy si basa sul formato JSON.

I messaggi di richiesta e risposta devono iniziare con [header and data
length](/manual/appendix/protocols/header_datalen).

[comment]: # ({/7382efcd-7382efcd})

[comment]: # ({14661e11-14661e11})
#### Proxy passivo

[comment]: # ({/14661e11-14661e11})

[comment]: # ({52650084-fac082ad})
##### Richiesta di configurazione

Il server invierà per primo una richiesta vuota `proxy config`. Questa richiesta viene inviata ogni `ProxyConfigFrequency`
(secondo il parametro di configurazione del server) secondi.

Il proxy risponde con la versione corrente del proxy, il token di sessione e la revisione della configurazione. Il server risponde con i dati di configurazione che devono essere aggiornati.

| name | <   | <   | <   | <   | value type | description |
|-|-|-|-|----------|----------|----------------------------------------|
| server→proxy: | <   | <   | <   | <   | <   | <   |
| **request** | <   | <   | <   | <   | *string* | 'proxy config' |
| |<|<|<|<|<|<|
| proxy→server: | <   | <   | <   | <   | <   | <   |
| **version** | <   | <   | <   | <   | *string* | Versione del proxy (\<major>.\<minor>.\<build>). |
| **session** | <   | <   | <   | <   | *string* | Token di sessione della configurazione del proxy. |
| **config_revision** | <   | <   | <   | <   | *number* | Revisione della configurazione del proxy. |
| |<|<|<|<|<|<|
| server→proxy: | <   | <   | <   | <   | <   | <   |
| **full_sync** | <   | <   | <   | <   | *number* | 1 - se vengono inviati tutti i dati di configurazione; assente - altrimenti (opzionale). |
| **data** | <   | <   | <   | <   | *array* | Oggetto dei dati della tabella. Assente se la configurazione non è stata modificata (opzionale). |
|     | **\<table>** | <   | <   | <   | *object* | Uno o più oggetti con dati \<table> (opzionale, a seconda delle modifiche). |
| ^   |     | **fields** | <   | <   | *array* | Array di nomi dei campi. |
| ^   | ^   |     | -   | <   | *string* | Nome del campo. |
| ^   | ^   | **data** | <   | <   | *array* | Array di righe. |
| ^   | ^   |     | -   | <   | *array* | Array di colonne. |
| ^   | ^   | ^   |     | -   | *string*,*number* | Valore della colonna con tipo dipendente dal tipo di colonna nello schema del database. |
|     | <   | <   | <   | <   | <   | <   |
| **macro.secrets** | <   | <   | <   | <  | *object* | Informazioni sulle macro segrete, assente se non ci sono modifiche nelle macro del vault (opzionale). |
| **config_revision** | <   | <   | <   | <   | *number* | Revisione della cache di configurazione - inviata con i dati di configurazione (opzionale). |
| **del_hostids** | <   | <   | <   | <   | *array* | Array degli hostid rimossi (opzionale). |
|     | -   | <   | <   | <   | *number* | Identificatore dell'host. |
| **del_macro_hostids** | <   | <   | <   | <   | *array* | Array di hostid con tutte le macro rimosse (opzionale). |
|     | -   | <   | <   | <   | *number* | Identificatore dell'host. |
|     | <   | <   | <   | <   | <   | <   |
| proxy→server: | <   | <   | <   | <   | <   | <   |
| **response** | <   | <   | <   | <   | *string* | Informazioni di esito della richiesta ('success' o 'failed'). |
| **version** | <   | <   | <   | <   | *string* | Versione del proxy (\<major>.\<minor>.\<build>). |

Example:

server→proxy:

```json
{
  "request":"proxy config"
} 
```

proxy→server:

```json
{
  "version": "7.4.0",
  "session": "0033124949800811e5686dbfd9bcea98",
  "config_revision": 0
}
```

server→proxy:

```json
{
	"full_sync": 1,
	"data": {
		"hosts": {
			"fields": ["hostid", "host", "status", "ipmi_authtype", "ipmi_privilege", "ipmi_username", "ipmi_password", "name", "tls_connect", "tls_accept", "tls_issuer", "tls_subject", "tls_psk_identity", "tls_psk"],
			"data": [
				[10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
			]
		},
		"interface": {
			"fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
			"data": [
				[1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
			]
		},
		"interface_snmp": {
			"fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
			"data": []
		},
		"host_inventory": {
			"fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
			"data": [
				[10084, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "56.95387", "24.22067", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
			]
		},
		"items": {
			"fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
			"data": [
				[44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
				[44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
			]
		},
		"item_rtdata": {
			"fields": ["itemid", "lastlogsize", "mtime"],
			"data": [
				[44161, 0, 0],
				[44162, 0, 0]
			]
		},
		"item_preproc": {
			"fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
			"data": []
		},
		"item_parameter": {
			"fields": ["item_parameterid", "itemid", "name", "value"],
			"data": []
		},
		"globalmacro": {
			"fields": ["globalmacroid", "macro", "value", "type"],
			"data": [
				[2, "{$SNMP_COMMUNITY}", "public", 0]
			]
		},
		"hosts_templates": {
			"fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
			"data": []
		},
		"hostmacro": {
			"fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
			"data": [
				[5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
			]
		},
		"drules": {
			"fields": ["druleid", "name", "iprange", "delay"],
			"data": [
				[2, "Local network", "127.0.0.1", "10s"]
			]
		},
		"dchecks": {
			"fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
			"data": [
				[2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
			]
		},
		"regexps": {
			"fields": ["regexpid", "name"],
			"data": [
				[1, "File systems for discovery"],
				[2, "Network interfaces for discovery"],
				[3, "Storage devices for SNMP discovery"],
				[4, "Windows service names for discovery"],
				[5, "Windows service startup states for discovery"]
			]
		},
		"expressions": {
			"fields": ["expressionid", "regexpid", "expression", "expression_type", "exp_delimiter", "case_sensitive"],
			"data": [
				[1, 1, "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", 3, ",", 0],
				[3, 3, "^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$", 4, ",", 1],
				[5, 4, "^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$", 4, ",", 1],
				[6, 5, "^(automatic|automatic delayed)$", 3, ",", 1],
				[7, 2, "^Software Loopback Interface", 4, ",", 1],
				[8, 2, "^(In)?[Ll]oop[Bb]ack[0-9._]*$", 4, ",", 1],
				[9, 2, "^NULL[0-9.]*$", 4, ",", 1],
				[10, 2, "^[Ll]o[0-9.]*$", 4, ",", 1],
				[11, 2, "^[Ss]ystem$", 4, ",", 1],
				[12, 2, "^Nu[0-9.]*$", 4, ",", 1]
			]
		},
		"settings": {
			"fields": ["name", "type", "value_str", "value_int"],
			"data": [
				["autoreg_tls_accept", 2, "", 1],
				["hk_history_global", 2, "", 0],
				["snmptrap_logging", 2, "", 1],
				["proxy_secrets_provider", 2, "", 0],
				["hk_history", 1, "31d", 0],
				["timeout_db_monitor", 1, "3s", 0],
				["timeout_external_check", 1, "3s", 0],
				["timeout_http_agent", 1, "3s", 0],
				["timeout_simple_check", 1, "3s", 0],
				["timeout_snmp_agent", 1, "3s", 0],
				["timeout_ssh_agent", 1, "3s", 0],
				["timeout_telnet_agent", 1, "3s", 0],
				["timeout_zabbix_agent", 1, "3s", 0],
				["timeout_browser", 1, "30s", 0]
			]
		},
		"httptest": {
			"fields": ["httptestid", "name", "delay", "agent", "authentication", "http_user", "http_password", "hostid", "http_proxy", "retries", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host"],
			"data": []
		},
		"httptestitem": {
			"fields": ["httptestitemid", "httptestid", "itemid", "type"],
			"data": []
		},
		"httptest_field": {
			"fields": ["httptest_fieldid", "httptestid", "type", "name", "value"],
			"data": []
		},
		"httpstep": {
			"fields": ["httpstepid", "httptestid", "name", "no", "url", "timeout", "posts", "required", "status_codes", "follow_redirects", "retrieve_mode", "post_type"],
			"data": []
		},
		"httpstepitem": {
			"fields": ["httpstepitemid", "httpstepid", "itemid", "type"],
			"data": []
		},
		"httpstep_field": {
			"fields": ["httpstep_fieldid", "httpstepid", "type", "name", "value"],
			"data": []
		},
		"config_autoreg_tls": {
			"fields": ["autoreg_tlsid", "tls_psk_identity", "tls_psk"],
			"data": [
				[1, "", ""]
			]
		}
	},
	"macro.secrets": {
		"AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix": {
			"Content": "738"
		}
	},
	"config_revision": 2
}
```

proxy→server:

```json
{
  "response": "success",
  "version": "7.4.0"
}
```

[comment]: # ({/52650084-fac082ad})

[comment]: # ({74b1e336-c348e5d9})
##### Richiesta dati

La richiesta `proxy data` viene utilizzata per ottenere la disponibilità delle interfacce host, i dati storici, di discovery e di autoregistrazione dal proxy. Questa richiesta viene inviata ogni `ProxyDataFrequency` (parametro di configurazione del server) secondi.

|name|<|value type|description|
|-|----------|----------|----------------------------------------|
|server→proxy:|<|<|<|
|**request**|<|*string*|'proxy data'|
|proxy→server:|<|<|<|
|**session**|<|*string*|Token della sessione dati.|
|**interface availability**|<|*array*|*(optional)* Array di oggetti di disponibilità delle interfacce.|
| |**interfaceid**|*number*|Identificatore dell'interfaccia.|
|^|**available**|*number*|Disponibilità dell'interfaccia:<br><br>**0**, *INTERFACE\_AVAILABLE\_UNKNOWN* - sconosciuta<br>**1**, *INTERFACE\_AVAILABLE\_TRUE* - disponibile<br>**2**, *INTERFACE\_AVAILABLE\_FALSE* - non disponibile|
|^|**error**|*string*|Messaggio di errore dell'interfaccia oppure stringa vuota.|
|**history data**|<|*array*|*(optional)* Array di oggetti dei dati storici.|
| |**itemid**|*number*|Identificatore dell'item.|
|^|**clock**|*number*|Timestamp del valore dell'item (secondi).|
|^|**ns**|*number*|Timestamp del valore dell'item (nanosecondi).|
|^|**value**|*string*|*(optional)* Valore dell'item.|
|^|**id**|*number*|Identificatore del valore (contatore crescente, univoco all'interno di una singola sessione dati).|
|^|**timestamp**|*number*|*(optional)* Timestamp degli item di tipo log.|
|^|**source**|*string*|*(optional)* Valore source dell'item eventlog.|
|^|**severity**|*number*|*(optional)* Valore severity dell'item eventlog.|
|^|**eventid**|*number*|*(optional)* Valore eventid dell'item eventlog.|
|^|**state**|*string*|*(optional)* Stato dell'item:<br>**0**, *ITEM\_STATE\_NORMAL*<br>**1**, *ITEM\_STATE\_NOTSUPPORTED*|
|^|**lastlogsize**|*number*|*(optional)* Ultima dimensione del log per gli item di tipo log.|
|^|**mtime**|*number*|*(optional)* Ora di modifica degli item di tipo log.|
|**discovery data**|<|*array*|*(optional)* Array di oggetti dei dati di discovery.|
| |**clock**|*number*|Timestamp dei dati di discovery.|
|^|**druleid**|*number*|Identificatore della regola di discovery.|
|^|**dcheckid**|*number*|Identificatore del controllo di discovery oppure null per i dati della regola di discovery.|
|^|**type**|*number*|Tipo di controllo di discovery:<br><br>**-1** dati della regola di discovery<br>**0**, *SVC\_SSH* - controllo del servizio SSH<br>**1**, *SVC\_LDAP* - controllo del servizio LDAP<br>**2**, *SVC\_SMTP* - controllo del servizio SMTP<br>**3**, *SVC\_FTP* - controllo del servizio FTP<br>**4**, *SVC\_HTTP* - controllo del servizio HTTP<br>**5**, *SVC\_POP* - controllo del servizio POP<br>**6**, *SVC\_NNTP* - controllo del servizio NNTP<br>**7**, *SVC\_IMAP* - controllo del servizio IMAP<br>**8**, *SVC\_TCP* - controllo della disponibilità della porta TCP<br>**9**, *SVC\_AGENT* - Zabbix agent<br>**10**, *SVC\_SNMPv1* - agent SNMPv1<br>**11**, *SVC\_SNMPv2* - agent SNMPv2<br>**12**, *SVC\_ICMPPING* - ping ICMP<br>**13**, *SVC\_SNMPv3* - agent SNMPv3<br>**14**, *SVC\_HTTPS* - controllo del servizio HTTPS<br>**15**, *SVC\_TELNET* - controllo della disponibilità Telnet|
|^|**ip**|*string*|Indirizzo IP dell'host.|
|^|**dns**|*string*|Nome DNS dell'host.|
|^|**port**|*number*|*(optional)* Numero di porta del servizio.|
|^|**key\_**|*string*|*(optional)* Chiave dell'item per il controllo di discovery di tipo **9** *SVC\_AGENT*|
|^|**value**|*string*|*(optional)* Valore ricevuto dal servizio, può essere vuoto per la maggior parte dei servizi.|
|^|**status**|*number*|*(optional)* Stato del servizio:<br><br>**0**, *DOBJECT\_STATUS\_UP* - servizio attivo<br>**1**, *DOBJECT\_STATUS\_DOWN* - servizio non attivo|
|**auto registration**|<|*array*|*(optional)* Array di oggetti dei dati di autoregistrazione.|
| |**clock**|*number*|Timestamp dei dati di autoregistrazione.|
|^|**host**|*string*|Nome dell'host.|
|^|**ip**|*string*|*(optional)* Indirizzo IP dell'host.|
|^|**dns**|*string*|*(optional)* Nome DNS risolto dall'indirizzo IP.|
|^|**port**|*string*|*(optional)* Porta dell'host.|
|^|**host\_metadata**|*string*|*(optional)* Metadati dell'host inviati da agent (in base al parametro di configurazione dell'agent HostMetadata o HostMetadataItem).|
|**tasks**|<|*array*|*(optional)* Array di task.|
| |**type**|*number*|Tipo di task:<br><br>**0**, *ZBX\_TM\_TASK\_PROCESS\_REMOTE\_COMMAND\_RESULT* - risultato del comando remoto|
|^|**status**|*number*|Stato di esecuzione del comando remoto:<br><br>**0**, *ZBX\_TM\_REMOTE\_COMMAND\_COMPLETED* - comando remoto completato con successo<br>**1**, *ZBX\_TM\_REMOTE\_COMMAND\_FAILED* - comando remoto non riuscito|
|^|**error**|*string*|*(optional)* Messaggio di errore.|
|^|**parent\_taskid**|*number*|ID del task padre.|
|**more**|<|*number*|*(optional)* 1 - ci sono altri dati storici da inviare.|
|**clock**|<|*number*|*(optional)* Timestamp del trasferimento dati (secondi).|
|**ns**|<|*number*|*(optional)* Timestamp del trasferimento dati (nanosecondi).|
|**version**|<|*string*|Versione del proxy (<major>.<minor>.<build>).|
|server→proxy:|<|<|<|
|**response**|<|*string*|Informazioni di successo della richiesta ('success' o 'failed').|
|**tasks**|<|*array*|*(optional)* Array di task.|
| |**type**|*number*|Tipo di task:<br><br>**1**, *ZBX\_TM\_TASK\_PROCESS\_REMOTE\_COMMAND* - comando remoto|
|^|**clock**|*number*|Ora di creazione del task.|
|^|**ttl**|*number*|Tempo in secondi dopo il quale il task scade.|
|^|**commandtype**|*number*|Tipo di comando remoto:<br><br>**0**, *ZBX\_SCRIPT\_TYPE\_CUSTOM\_SCRIPT* - usa script personalizzato<br>**1**, *ZBX\_SCRIPT\_TYPE\_IPMI* - usa IPMI<br>**2**, *ZBX\_SCRIPT\_TYPE\_SSH* - usa SSH<br>**3**, *ZBX\_SCRIPT\_TYPE\_TELNET* - usa Telnet<br>**4**, *ZBX\_SCRIPT\_TYPE\_GLOBAL\_SCRIPT* - usa script globale (attualmente funzionalmente equivalente a uno script personalizzato)|
|^|**command**|*string*|Comando remoto da eseguire.|
|^|**execute\_on**|*number*|Destinazione di esecuzione per gli script personalizzati:<br><br>**0**, *ZBX\_SCRIPT\_EXECUTE\_ON\_AGENT* - esegui lo script su agent<br>**1**, *ZBX\_SCRIPT\_EXECUTE\_ON\_SERVER* - esegui lo script su server<br>**2**, *ZBX\_SCRIPT\_EXECUTE\_ON\_PROXY* - esegui lo script su proxy|
|^|**port**|*number*|*(optional)* Porta per i comandi Telnet e SSH.|
|^|**authtype**|*number*|*(optional)* Tipo di autenticazione per i comandi SSH.|
|^|**username**|*string*|*(optional)* Nome utente per i comandi Telnet e SSH.|
|^|**password**|*string*|*(optional)* Password per i comandi Telnet e SSH.|
|^|**publickey**|*string*|*(optional)* Chiave pubblica per i comandi SSH.|
|^|**privatekey**|*string*|*(optional)* Chiave privata per i comandi SSH.|
|^|**parent\_taskid**|*number*|ID del task padre.|
|^|**hostid**|*number*|ID dell'host di destinazione.|

Esempio:

server→proxy:

```json
{
  "request": "proxy data"
}
```

proxy→server:

```json
{
    "session": "12345678901234567890123456789012"
    "interface availability": [
        {
            "interfaceid": 1,
            "available": 1,
            "error": ""
    },
        {
            "interfaceid": 2,
            "available": 2,
            "error": "Get value from agent failed: cannot connect to [[127.0.0.1]:10049]: [111] Connection refused"
    },
        {
            "interfaceid": 3,
            "available": 1,
            "error": ""
    },
        {
            "interfaceid": 4,
            "available": 1,
            "error": ""
    }
    ],
    "history data":[
        {
            "itemid":"12345",
            "clock":1478609647,
            "ns":332510044,
            "value":"52956612",
            "id": 1
        },
        {
            "itemid":"12346",
            "clock":1478609647,
            "ns":330690279,
            "state":1,
            "value":"Cannot find information for this network interface in /proc/net/dev.",
            "id": 2
        }
    ],
    "discovery data":[
        {
            "clock":1478608764,
            "drule":2,
            "dcheck":3,
            "type":12,
            "ip":"10.3.0.10",
            "dns":"vdebian",
            "status":1
        },
        {
            "clock":1478608764,
            "drule":2,
            "dcheck":null,
            "type":-1,
            "ip":"10.3.0.10",
            "dns":"vdebian",
            "status":1
        }
    ],
    "auto registration":[
        {
            "clock":1478608371,
            "host":"Logger1",
            "ip":"10.3.0.1",
            "dns":"localhost",
            "port":"10050"
        },
        {
            "clock":1478608381,
            "host":"Logger2",
            "ip":"10.3.0.2",
            "dns":"localhost",
            "port":"10050"
        }
    ],
    "tasks":[
        {
            "type": 0,
            "status": 0,
            "parent_taskid": 10
        },
        {
            "type": 0,
            "status": 1,
            "error": "No permissions to execute task.",
            "parent_taskid": 20
        }
    ],
    "version":"7.4.0"
}
```

server→proxy:

```json
{
  "response": "success",
  "tasks":[
      {
         "type": 1,
         "clock": 1478608371,
         "ttl": 600,
         "commandtype": 2,
         "command": "restart_service1.sh",
         "execute_on": 2,
         "port": 80,
         "authtype": 0,
         "username": "userA",
         "password": "password1",
         "publickey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe",
         "privatekey": "lsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5QCqGKukO1De7zhd",
         "parent_taskid": 10,
         "hostid": 10070
      },
      {
         "type": 1,
         "clock": 1478608381,
         "ttl": 600,
         "commandtype": 1,
         "command": "restart_service2.sh",
         "execute_on": 0,
         "authtype": 0,
         "username": "",
         "password": "",
         "publickey": "",
         "privatekey": "",
         "parent_taskid": 20,
         "hostid": 10084
      }
  ]
}
```

[comment]: # ({/74b1e336-c348e5d9})

[comment]: # ({50f116cc-cecd61c8})
##### Richiesta di task

Lo scambio `proxy tasks` gestisce la consegna e la conferma di ricezione dei task dei comandi remoti tra il server e un proxy passivo. Quando il server interroga il proxy per ottenere i risultati dei task, invia una richiesta `proxy tasks` vuota all'intervallo definito da `ProxyDataFrequency`. Il proxy risponde con la propria versione corrente e con eventuali risultati di task in sospeso (inclusi i timestamp). Il server quindi conferma la ricezione restituendo una `response` e può includere nuovi task da eseguire da parte del proxy.

|name|<|value type|description|
|-|----------|----------|----------------------------------------|
|server→proxy:|<|<|<|
|**request**|<|*string*|'proxy tasks'|
|proxy→server:|<|<|<|
|**version**|<|*string*|Versione del proxy (<major>.<minor>.<build>).|
|**clock**|<|*number*|*(opzionale)* Timestamp del trasferimento dati (secondi).|
|**ns**|<|*number*|*(opzionale)* Timestamp del trasferimento dati (nanosecondi).|
|server→proxy:|<|<|<|
| **response** | <   | *string* | Informazioni sull'esito della richiesta ('success' o 'failed'). |

Esempio:

server→proxy:

```json
{
  "request":"proxy tasks"
}
```

proxy→server:

```json
{
  "version":"7.0.0",
  "clock":1721059872,
  "ns":848141522
}
```

server→proxy:

```json
{
  "response":"success"
}
```

[comment]: # ({/50f116cc-cecd61c8})

[comment]: # ({967ea060-967ea060})
#### Proxy attivo

[comment]: # ({/967ea060-967ea060})

[comment]: # ({ec2f11cd-bed30a3b})
##### Richiesta di configurazione

La richiesta `proxy config` viene inviata dal proxy attivo per ottenere i dati di configurazione del proxy. Questa richiesta viene inviata ogni `ProxyConfigFrequency` (parametro di configurazione del proxy) secondi.

| name | <   | <   | <   | <   | value type | description |
|-|-|-|-|----------|----------|----------------------------------------|
| proxy→server: | <   | <   | <   | <   | <   | <   |
| **request** | <   | <   | <   | <   | *string* | 'proxy config' |
| **host** | <   | <   | <   | <   | *string<br>* | Nome del proxy. |
| **version** | <   | <   | <   | <   | *string* | Versione del proxy (\<major>.\<minor>.\<build>). |
| **session** | <   | <   | <   | <   | *string* | Token di sessione della configurazione del proxy. |
| **config_revision** | <   | <   | <   | <   | *number* | Revisione della configurazione del proxy. |
| **hostmap_revision** | <   | <   | <   | <   | *number* | Revisione corrente della mappatura host-proxy. |
|     | <   | <   | <   | <   | <   | <   |
| server→proxy: | <   | <   | <   | <   | <   | <   |
| **full_sync** | <   | <   | <   | <   | *number* | 1 - se vengono inviati tutti i dati di configurazione, assente altrimenti (opzionale). |
| **data** | <   | <   | <   | <   | *array* | Oggetto dei dati della tabella. Assente se la configurazione non è stata modificata (opzionale). |
|     | **\<table>** | <   | <   | <   | *object* | Uno o più oggetti con dati \<table> (opzionale, a seconda delle modifiche). |
| ^   |     | **fields** | <   | <   | *array* | Array di nomi dei campi. |
| ^   | ^   |     | -   | <   | *string* | Nome del campo. |
| ^   | ^   | **data** | <   | <   | *array* | Array di righe. |
| ^   | ^   |     | -   | <   | *array* | Array di colonne. |
| ^   | ^   | ^   |     | -   | *string*,*number* | Valore della colonna con tipo dipendente dal tipo di colonna nello schema del database. |
|     | <   | <   | <   | <   | <   | <   |
| **macro.secrets** | <   | <   | <   | <  | *object* | Informazioni sulle macro segrete, assente se non ci sono modifiche nelle macro vault (opzionale). |
| **proxy_group** | <   | <   | <   | <  | *string* | Nome del gruppo proxy a cui appartiene il proxy. |
| **config_revision** | <   | <   | <   | <   | *number* | Revisione della cache di configurazione - inviata con i dati di configurazione (opzionale). |
| **del_hostids** | <   | <   | <   | <   | *array* | Array di hostid rimossi (opzionale). |
|     | -   | <   | <   | <   | *number* | Identificatore dell'host. |
| **del_macro_hostids** | <   | <   | <   | <   | *array* | Array di hostid con tutte le macro rimosse (opzionale). |
|     | -   | <   | <   | <   | *number* | Identificatore dell'host. |

Esempio:

proxy→server:

```json
{
  "request": "proxy config",
  "host": "Zabbix proxy",
  "version":"7.4.0",
  "session": "fd59a09ff4e9d1fb447de1f04599bcf6",
  "config_revision": 0
}
```

server→proxy:

```json
{
	"full_sync": 1,
	"data": {
		"hosts": {
			"fields": ["hostid", "host", "status", "ipmi_authtype", "ipmi_privilege", "ipmi_username", "ipmi_password", "name", "tls_connect", "tls_accept", "tls_issuer", "tls_subject", "tls_psk_identity", "tls_psk"],
			"data": [
				[10084, "Zabbix server", 0, -1, 2, "", "", "Zabbix server", 1, 1, "", "", "", ""]
			]
		},
		"interface": {
			"fields": ["interfaceid", "hostid", "main", "type", "useip", "ip", "dns", "port", "available"],
			"data": [
				[1, 10084, 1, 1, 1, "127.0.0.1", "", "10053", 1]
			]
		},
		"interface_snmp": {
			"fields": ["interfaceid", "version", "bulk", "community", "securityname", "securitylevel", "authpassphrase", "privpassphrase", "authprotocol", "privprotocol", "contextname"],
			"data": []
		},
		"host_inventory": {
			"fields": ["hostid", "type", "type_full", "name", "alias", "os", "os_full", "os_short", "serialno_a", "serialno_b", "tag", "asset_tag", "macaddress_a", "macaddress_b", "hardware", "hardware_full", "software", "software_full", "software_app_a", "software_app_b", "software_app_c", "software_app_d", "software_app_e", "contact", "location", "location_lat", "location_lon", "notes", "chassis", "model", "hw_arch", "vendor", "contract_number", "installer_name", "deployment_status", "url_a", "url_b", "url_c", "host_networks", "host_netmask", "host_router", "oob_ip", "oob_netmask", "oob_router", "date_hw_purchase", "date_hw_install", "date_hw_expiry", "date_hw_decomm", "site_address_a", "site_address_b", "site_address_c", "site_city", "site_state", "site_country", "site_zip", "site_rack", "site_notes", "poc_1_name", "poc_1_email", "poc_1_phone_a", "poc_1_phone_b", "poc_1_cell", "poc_1_screen", "poc_1_notes", "poc_2_name", "poc_2_email", "poc_2_phone_a", "poc_2_phone_b", "poc_2_cell", "poc_2_screen", "poc_2_notes"],
			"data": [
				[10084, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "56.95387", "24.22067", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
			]
		},
		"items": {
			"fields": ["itemid", "type", "snmp_oid", "hostid", "key_", "delay", "history", "status", "value_type", "trapper_hosts", "logtimefmt", "params", "ipmi_sensor", "authtype", "username", "password", "publickey", "privatekey", "flags", "interfaceid", "inventory_link", "jmx_endpoint", "master_itemid", "timeout", "url", "query_fields", "posts", "status_codes", "follow_redirects", "post_type", "http_proxy", "headers", "retrieve_mode", "request_method", "output_format", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host", "allow_traps"],
			"data": [
				[44161, 7, "", 10084, "agent.hostmetadata", "10s", "90d", 0, 1, "", "", "", "", 0, "", "", "", "", 0, null, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0],
				[44162, 0, "", 10084, "agent.ping", "10s", "90d", 0, 3, "", "", "", "", 0, "", "", "", "", 0, 1, 0, "", null, "3s", "", "", "", "200", 1, 0, "", "", 0, 0, 0, "", "", "", 0, 0, 0]
			]
		},
		"item_rtdata": {
			"fields": ["itemid", "lastlogsize", "mtime"],
			"data": [
				[44161, 0, 0],
				[44162, 0, 0]
			]
		},
		"item_preproc": {
			"fields": ["item_preprocid", "itemid", "step", "type", "params", "error_handler", "error_handler_params"],
			"data": []
		},
		"item_parameter": {
			"fields": ["item_parameterid", "itemid", "name", "value"],
			"data": []
		},
		"globalmacro": {
			"fields": ["globalmacroid", "macro", "value", "type"],
			"data": [
				[2, "{$SNMP_COMMUNITY}", "public", 0]
			]
		},
		"hosts_templates": {
			"fields": ["hosttemplateid", "hostid", "templateid", "link_type"],
			"data": []
		},
		"hostmacro": {
			"fields": ["hostmacroid", "hostid", "macro", "value", "type", "automatic"],
			"data": [
				[5676, 10084, "{$M}", "AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix:Content", 2, 0]
			]
		},
		"drules": {
			"fields": ["druleid", "name", "iprange", "delay"],
			"data": [
				[2, "Local network", "127.0.0.1", "10s"]
			]
		},
		"dchecks": {
			"fields": ["dcheckid", "druleid", "type", "key_", "snmp_community", "ports", "snmpv3_securityname", "snmpv3_securitylevel", "snmpv3_authpassphrase", "snmpv3_privpassphrase", "uniq", "snmpv3_authprotocol", "snmpv3_privprotocol", "snmpv3_contextname", "host_source", "name_source"],
			"data": [
				[2, 2, 9, "system.uname", "", "10052", "", 0, "", "", 0, 0, 0, "", 1, 0]
			]
		},
		"regexps": {
			"fields": ["regexpid", "name"],
			"data": [
				[1, "File systems for discovery"],
				[2, "Network interfaces for discovery"],
				[3, "Storage devices for SNMP discovery"],
				[4, "Windows service names for discovery"],
				[5, "Windows service startup states for discovery"]
			]
		},
		"expressions": {
			"fields": ["expressionid", "regexpid", "expression", "expression_type", "exp_delimiter", "case_sensitive"],
			"data": [
				[1, 1, "^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$", 3, ",", 0],
				[3, 3, "^(Physical memory|Virtual memory|Memory buffers|Cached memory|Swap space)$", 4, ",", 1],
				[5, 4, "^(MMCSS|gupdate|SysmonLog|clr_optimization_v2.0.50727_32|clr_optimization_v4.0.30319_32)$", 4, ",", 1],
				[6, 5, "^(automatic|automatic delayed)$", 3, ",", 1],
				[7, 2, "^Software Loopback Interface", 4, ",", 1],
				[8, 2, "^(In)?[Ll]oop[Bb]ack[0-9._]*$", 4, ",", 1],
				[9, 2, "^NULL[0-9.]*$", 4, ",", 1],
				[10, 2, "^[Ll]o[0-9.]*$", 4, ",", 1],
				[11, 2, "^[Ss]ystem$", 4, ",", 1],
				[12, 2, "^Nu[0-9.]*$", 4, ",", 1]
			]
		},
		"settings": {
			"fields": ["name", "type", "value_str", "value_int"],
			"data": [
				["autoreg_tls_accept", 2, "", 1],
				["hk_history_global", 2, "", 0],
				["snmptrap_logging", 2, "", 1],
				["proxy_secrets_provider", 2, "", 0],
				["hk_history", 1, "31d", 0],
				["timeout_db_monitor", 1, "3s", 0],
				["timeout_external_check", 1, "3s", 0],
				["timeout_http_agent", 1, "3s", 0],
				["timeout_simple_check", 1, "3s", 0],
				["timeout_snmp_agent", 1, "3s", 0],
				["timeout_ssh_agent", 1, "3s", 0],
				["timeout_telnet_agent", 1, "3s", 0],
				["timeout_zabbix_agent", 1, "3s", 0],
				["timeout_browser", 1, "30s", 0]
			]
		},
		"httptest": {
			"fields": ["httptestid", "name", "delay", "agent", "authentication", "http_user", "http_password", "hostid", "http_proxy", "retries", "ssl_cert_file", "ssl_key_file", "ssl_key_password", "verify_peer", "verify_host"],
			"data": []
		},
		"httptestitem": {
			"fields": ["httptestitemid", "httptestid", "itemid", "type"],
			"data": []
		},
		"httptest_field": {
			"fields": ["httptest_fieldid", "httptestid", "type", "name", "value"],
			"data": []
		},
		"httpstep": {
			"fields": ["httpstepid", "httptestid", "name", "no", "url", "timeout", "posts", "required", "status_codes", "follow_redirects", "retrieve_mode", "post_type"],
			"data": []
		},
		"httpstepitem": {
			"fields": ["httpstepitemid", "httpstepid", "itemid", "type"],
			"data": []
		},
		"httpstep_field": {
			"fields": ["httpstep_fieldid", "httpstepid", "type", "name", "value"],
			"data": []
		},
		"config_autoreg_tls": {
			"fields": ["autoreg_tlsid", "tls_psk_identity", "tls_psk"],
			"data": [
				[1, "", ""]
			]
		}
	},
	"macro.secrets": {
		"AppID=zabbix_server&Query=Safe=passwordSafe;Object=zabbix": {
			"Content": "738"
		}
	},
	"config_revision": 2
}
```

[comment]: # ({/ec2f11cd-bed30a3b})

[comment]: # ({f7ffbeef-ef0ba621})
##### Richiesta dati

La richiesta `proxy data` viene inviata dal proxy per fornire i dati di disponibilità delle interfacce host, cronologia, discovery e autoregistrazione.
Questa richiesta viene inviata ogni `DataSenderFrequency` (parametro di configurazione del proxy) secondi.
Nota che il proxy attivo continuerà comunque a interrogare il server Zabbix ogni secondo per le attività di comandi remoti (con una richiesta `proxy data` vuota).

|name|<|value type|description|
|-|----------|----------|----------------------------------------|
|proxy→server:|<|<|<|
|**request**|<|*string*|'proxy data'|
|**host**|<|*string*|Nome del proxy.|
|**session**|<|*string*|Token della sessione dati.|
|**interface availability**|<|*array*|*(optional)* Array di oggetti dati di disponibilità delle interfacce.|
| |**interfaceid**|*number*|Identificatore dell'interfaccia.|
|^|**available**|*number*|Disponibilità dell'interfaccia:<br><br>**0**, *INTERFACE\_AVAILABLE\_UNKNOWN* - sconosciuta<br>**1**, *INTERFACE\_AVAILABLE\_TRUE* - disponibile<br>**2**, *INTERFACE\_AVAILABLE\_FALSE* - non disponibile|
|^|**error**|*string*|Messaggio di errore dell'interfaccia o stringa vuota.|
|**history data**|<|*array*|*(optional)* Array di oggetti dati storici.|
| |**itemid**|*number*|Identificatore dell'item.|
|^|**clock**|*number*|Timestamp del valore dell'item (secondi).|
|^|**ns**|*number*|Timestamp del valore dell'item (nanosecondi).|
|^|**value**|*string*|*(optional)* Valore dell'item.|
|^|**id**|*number*|Identificatore del valore (contatore crescente, univoco all'interno di una sessione dati).|
|^|**timestamp**|*number*|*(optional)* Timestamp degli item di tipo log.|
|^|**source**|*string*|*(optional)* Valore source dell'item eventlog.|
|^|**severity**|*number*|*(optional)* Valore severity dell'item eventlog.|
|^|**eventid**|*number*|*(optional)* Valore eventid dell'item eventlog.|
|^|**state**|*string*|*(optional)* Stato dell'item:<br>**0**, *ITEM\_STATE\_NORMAL*<br>**1**, *ITEM\_STATE\_NOTSUPPORTED*|
|^|**lastlogsize**|*number*|*(optional)* Ultima dimensione del log per gli item di tipo log.|
|^|**mtime**|*number*|*(optional)* Ora di modifica degli item di tipo log.|
|**discovery data**|<|*array*|*(optional)* Array di oggetti dati di discovery.|
| |**clock**|*number*|Timestamp dei dati di discovery.|
|^|**druleid**|*number*|Identificatore della regola di discovery.|
|^|**dcheckid**|*number*|Identificatore del controllo di discovery o null per i dati della regola di discovery.|
|^|**type**|*number*|Tipo di controllo di discovery:<br><br>**-1** dati della regola di discovery<br>**0**, *SVC\_SSH* - controllo del servizio SSH<br>**1**, *SVC\_LDAP* - controllo del servizio LDAP<br>**2**, *SVC\_SMTP* - controllo del servizio SMTP<br>**3**, *SVC\_FTP* - controllo del servizio FTP<br>**4**, *SVC\_HTTP* - controllo del servizio HTTP<br>**5**, *SVC\_POP* - controllo del servizio POP<br>**6**, *SVC\_NNTP* - controllo del servizio NNTP<br>**7**, *SVC\_IMAP* - controllo del servizio IMAP<br>**8**, *SVC\_TCP* - controllo della disponibilità della porta TCP<br>**9**, *SVC\_AGENT* - agent Zabbix<br>**10**, *SVC\_SNMPv1* - agent SNMPv1<br>**11**, *SVC\_SNMPv2* - agent SNMPv2<br>**12**, *SVC\_ICMPPING* - ping ICMP<br>**13**, *SVC\_SNMPv3* - agent SNMPv3<br>**14**, *SVC\_HTTPS* - controllo del servizio HTTPS<br>**15**, *SVC\_TELNET* - controllo della disponibilità Telnet|
|^|**ip**|*string*|Indirizzo IP dell'host.|
|^|**dns**|*string*|Nome DNS dell'host.|
|^|**port**|*number*|*(optional)* Numero di porta del servizio.|
|^|**key\_**|*string*|*(optional)* Chiave dell'item per il controllo di discovery di tipo **9** *SVC\_AGENT*|
|^|**value**|*string*|*(optional)* Valore ricevuto dal servizio, può essere vuoto per la maggior parte dei servizi.|
|^|**status**|*number*|*(optional)* Stato del servizio:<br><br>**0**, *DOBJECT\_STATUS\_UP* - servizio attivo<br>**1**, *DOBJECT\_STATUS\_DOWN* - servizio non attivo|
|**autoregistration**|<|*array*|*(optional)* Array di oggetti dati di autoregistrazione.|
| |**clock**|*number*|Timestamp dei dati di autoregistrazione.|
|^|**host**|*string*|Nome dell'host.|
|^|**ip**|*string*|*(optional)* Indirizzo IP dell'host.|
|^|**dns**|*string*|*(optional)* Nome DNS risolto dall'indirizzo IP.|
|^|**port**|*string*|*(optional)* Porta dell'host.|
|^|**host\_metadata**|*string*|*(optional)* Metadati dell'host inviati dall'agent (in base al parametro di configurazione dell'agent HostMetadata o HostMetadataItem).|
|**tasks**|<|*array*|*(optional)* Array di attività.|
| |**type**|*number*|Tipo di attività:<br><br>**0**, *ZBX\_TM\_TASK\_PROCESS\_REMOTE\_COMMAND\_RESULT* - risultato del comando remoto|
|^|**status**|*number*|Stato di esecuzione del comando remoto:<br><br>**0**, *ZBX\_TM\_REMOTE\_COMMAND\_COMPLETED* - comando remoto completato con successo<br>**1**, *ZBX\_TM\_REMOTE\_COMMAND\_FAILED* - comando remoto non riuscito|
|^|**error**|*string*|*(optional)* Messaggio di errore.|
|^|**parent\_taskid**|*number*|ID dell'attività padre.|
|**more**|<|*number*|*(optional)* 1 - ci sono altri dati storici da inviare|
|**clock**|<|*number*|*(optional)* Timestamp del trasferimento dati (secondi).|
|**ns**|<|*number*|*(optional)* Timestamp del trasferimento dati (nanosecondi).|
|**version**|<|*string*|Versione del proxy (<major>.<minor>.<build>).|
|server→proxy:|<|<|<|
|**response**|<|*string*|Informazione di successo della richiesta ('success' o 'failed').|
|**upload**|<|*string*|Controllo di upload per i dati storici (history, autoregistration, disponibilità host, network discovery).<br><br>Valori possibili:<br>**enabled** - funzionamento normale<br>**disabled** - il server non accetta dati (possibilmente a causa del superamento della cache interna)|
|**tasks**|<|*array*|*(optional)* Array di attività.|
| |**type**|*number*|Tipo di attività:<br><br>**1**, *ZBX\_TM\_TASK\_PROCESS\_REMOTE\_COMMAND* - comando remoto|
|^|**clock**|*number*|Ora di creazione dell'attività.|
|^|**ttl**|*number*|Tempo in secondi dopo il quale l'attività scade.|
|^|**commandtype**|*number*|Tipo di comando remoto:<br><br>**0**, *ZBX\_SCRIPT\_TYPE\_CUSTOM\_SCRIPT* - usa uno script personalizzato<br>**1**, *ZBX\_SCRIPT\_TYPE\_IPMI* - usa IPMI<br>**2**, *ZBX\_SCRIPT\_TYPE\_SSH* - usa SSH<br>**3**, *ZBX\_SCRIPT\_TYPE\_TELNET* - usa Telnet<br>**4**, *ZBX\_SCRIPT\_TYPE\_GLOBAL\_SCRIPT* - usa uno script globale (attualmente funzionalmente equivalente a uno script personalizzato)|
|^|**command**|*string*|Comando remoto da eseguire.|
|^|**execute\_on**|*number*|Destinazione di esecuzione per gli script personalizzati:<br><br>**0**, *ZBX\_SCRIPT\_EXECUTE\_ON\_AGENT* - esegui lo script sull'agent<br>**1**, *ZBX\_SCRIPT\_EXECUTE\_ON\_SERVER* - esegui lo script sul server<br>**2**, *ZBX\_SCRIPT\_EXECUTE\_ON\_PROXY* - esegui lo script sul proxy|
|^|**port**|*number*|*(optional)* Porta per i comandi Telnet e SSH.|
|^|**authtype**|*number*|*(optional)* Tipo di autenticazione per i comandi SSH.|
|^|**username**|*string*|*(optional)* Nome utente per i comandi Telnet e SSH.|
|^|**password**|*string*|*(optional)* Password per i comandi Telnet e SSH.|
|^|**publickey**|*string*|*(optional)* Chiave pubblica per i comandi SSH.|
|^|**privatekey**|*string*|*(optional)* Chiave privata per i comandi SSH.|
|^|**parent\_taskid**|*number*|ID dell'attività padre.|
|^|**hostid**|*number*|ID dell'host di destinazione.|

Esempio:

proxy→server:

```json
{
	"request": "proxy data",
	"host": "Zabbix proxy",
	"session": "818cdd1b537bdc5e50c09ed4969235b6",
	"interface availability": [{
		"interfaceid": 1,
		"available": 1,
		"error": ""
	}],
	"history data": [{
		"id": 1114,
		"itemid": 44162,
		"clock": 1665730632,
		"ns": 798953105,
		"value": "1"
	}, {
		"id": 1115,
		"itemid": 44161,
		"clock": 1665730633,
		"ns": 811684663,
		"value": "58"
	}],
	"auto registration": [{
		"clock": 1665730633,
		"host": "Zabbix server",
		"ip": "127.0.0.1",
		"dns": "localhost",
		"port": "10053",
		"host_metadata": "58",
		"tls_accepted": 1
	}],
	"discovery data": [{
		"clock": 1665732232,
		"drule": 2,
		"dcheck": 2,
		"ip": "127.0.0.1",
		"dns": "localhost",
		"port": 10052,
		"status": 1
	}, {
		"clock": 1665732232,
		"drule": 2,
		"dcheck": null,
		"ip": "127.0.0.1",
		"dns": "localhost",
		"status": 1
	}],
	"host data": [{
		"hostid": 10084,
		"active_status": 1
	}],
	"tasks": [{
		"type": 3,
		"clock": 1665730985,
		"ttl": 0,
		"status": -1,
		"info": "Remote commands are not enabled",
		"parent_taskid": 3
	}],
	"version": "7.4.0",
	"clock": 1665730643,
	"ns": 65389964
}
```

server→proxy:

```json
{
	"upload": "enabled",
	"response": "success",
	"tasks": [{
		"type": 2,
		"clock": 1665730986,
		"ttl": 600,
		"commandtype": 0,
		"command": "ping -c 3 127.0.0.1; case $? in [01]) true;; *) false;; esac",
		"execute_on": 2,
		"port": 0,
		"authtype": 0,
		"username": "",
		"password": "",
		"publickey": "",
		"privatekey": "",
		"alertid": 0,
		"parent_taskid": 4,
		"hostid": 10084
	}]
}
```

[comment]: # ({/f7ffbeef-ef0ba621})
